В приведенном ниже коде я ожидал, что это создаст цикл опроса, который будет срабатывать каждые 10 секунд, чтобы получить «отчет о статусе задания» с сервера. Кажется, он создает более 100 вызовов в секунду.Опрос каждые 10 секунд
Я получил свое образование от этого отличного article, но я, кажется, неправильно его читаю.
function UpdateEstimates() {
var request = { jobID: ExportVM.get("ticketID") };
var jqxhr = $.ajax({
type: "GET",
url: AppGlobals.serverURL + "GetJobStatus",
data: request,
contentType: "application/json; charset=utf-8",
complete: UpdateEstimates,
timeout: 10000,
dataType: "json"
});
jqxhr.done(function (data) { NewEstimates(data); });
jqxhr.fail(function (data) { alert('new estimates request failed'); });
}
Вызов очень низкие накладные расходы, так что я могу справиться легко 1 секунду обновления, но мне очень не нравится непрерывной скорости 100/сек очень много. Есть ли способ ввести задержку в цикл вызова?
хорошо вы вызываете функцию еще раз прав, когда он заканчивает - я думаю, что у вас есть недопонимание 'timeout' является –
' timeout' не задерживает вызов; он просто устанавливает максимальное время, которое может потребовать запрос. Я бы использовал 'setTimeout (UpdateEstimates, 10000)' in' done() '. –
Это не то, что подразумевается под длинным опросом. Вы просто пытаетесь опросить регулярно. Длительный опрос предполагает открытие запроса к серверу, а сервер, содержащий этот запрос, открыт до тех пор, пока данные не будут доступны для возврата клиенту. Я отредактировал соответственно. –