Преобразование функции таймера JavaScript для использования асинхронных вызовов - PullRequest
0 голосов
/ 06 марта 2011

У меня есть эта функция javascript, которая использует таймер для вызова ajax-файла каждые 2 секунды.
Однако я вижу, что эти данные отправляются в ajax-файл до завершения выполнения предыдущих данных.То есть он отправляет весь список примерно за 10 секунд, а обработка данных занимает около 120 секунд.

Есть ли способ, я могу отправить следующий узел данных, только когда предыдущийзакончил обработку? cb.call(this) используется для вызова функции, когда этот таймер завершен,
, в то время как querylimit является переменной ответа, которая выходит из функции, если она истинна.

С уважением
Нихил Гупта

1 Ответ

2 голосов
/ 06 марта 2011

Обычно я настраиваю то, что я называю «каскадом», что является цепной реакцией window.setTimeout (...) вызовов, а не одного window.setInterval (... ) вызов.

Вместо:

function requestAjaxData() {
    // prep ajax / call onAjaxDataReceived on success.
}
function onAjaxDataReceived() {
    // process data
}
window.setInterval(requestAjaxData, 2000);

Я делаю:

function requestAjaxData() {
    // prep ajax / call onAjaxDataReceived on success.
}
function onAjaxDataReceived() {
    // process data

    // continue the cascade
    requestAjaxDataCascade();
}
function requestAjaxDataCascade() {
    window.setTimeout(requestAjaxData, 2000);
}
requestAjaxDataCascade();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...