#ajax #loops #asynchronous
#ajax #циклы #асинхронный
Вопрос:
Я хочу опрашивать данные с веб-сервера (PHP) с интервалом в 15 секунд от 50 до 100 раз (или, скажем, бесконечный цикл, пока для переменной StopFlag не будет установлено значение true.). Для этого опроса данных я собираюсь использовать асинхронное сообщение AJAX для отправки запросовна веб-сервер. Как я могу этого добиться? Я пытался решить эту головоломку самостоятельно, но, к сожалению, мне это не удалось, поскольку в javascript нет ключевого слова для приостановки выполнения скрипта. Есть ли какой-нибудь способ заставить это работать? или какой-либо обходной путь для этого? Пожалуйста, дайте мне знать или поделитесь своим опытом, если вы уже сталкивались с этой проблемой.
Ответ №1:
Вы должны использовать обратный вызов для тайм-аута; он будет рекурсивно вызывать следующую функцию.
Вы также можете использовать jQuery, который поможет вам сделать ваш код более компактным. Результат может выглядеть примерно так:
var finished = false;
function keepTrying() {
if (finished) {
return;
}
$.ajax(params);
setTimeout(function() {
keepTrying();
}, 15000);
}
И в параметрах у вас будет такая функция успеха:
function success() {
finished = true;
}
Просто вызовите keepTrying() в первый раз; он будет зацикливаться до тех пор, пока не завершится успешно. Этот код немного уродлив, но, надеюсь, вы поняли идею.
Комментарии:
1. Рад узнать! Пожалуйста, примите ответ, мне нужна репутация для голосования 🙂