Вызов несколько раз уже запущенной функции

Я использую библиотеку dropzone для загрузки файлов, и как только файл загружен, я вызываю функцию, которая получает список файлов на сервере. Проблема в том, что когда я импортирую небольшие файлы, функция, извлекающая файлы, выполняется «одновременно», точнее: вызов этой функции уже запущен.

Я бы хотел установить флажок, чтобы ограничить доступ к этой функции, только когда она будет завершена.

//Listener on add file
dropzone.on("complete", function (file)
    ajaxListFiles();
});

Спасибо !

ajaxListFiles возвращает Promise, или есть какой-то параметр обратного вызова, который запускается после его завершения?

Martin Adámek 10.08.2018 11:09
ajaxListFiles добавляет html в документ после запроса, но ничего не возвращает
Benjamin Le Gallo 10.08.2018 11:15

Хорошо, но это ваш код, поэтому вы можете хотя бы установить какую-то глобальную переменную, чтобы знать, работает ли она, верно?

Martin Adámek 10.08.2018 11:17
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
1
3
23
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете просто установить флаг running при запуске функции и сбросить его при ее завершении. Затем просто проверьте этот флаг перед повторным выполнением функции:

let running = false;

dropzone.on("complete", function (file)
    if (!running) {
        ajaxListFiles();
    }
});

function ajaxListFiles() {
    running = true; // at the very beginning of this function

    // ... your code

    running = false; // when it ends, so probably in some callback, not necessary at the end of this function
}

Другие вопросы по теме