этот вопрос может дублироваться, но мне нужна помощь, чтобы исправить код.
Сценарий: после нажатия кнопки отправки ajax отправит данные формы на сервер. И на основе данных формы (переменные и скорость обновления) выполнить опрос, чтобы получить данные ответа.
Текущее узкое место: поскольку скорость и переменные объявлены глобально, правильный ответ будет отображаться только при первом нажатии и завершении отправки. В противном случае для опроса setTimeout для doPoll будет отображаться нулевое значение, поскольку данные формы не перехватываются.
Желаемый результат: как только пользователь отправит кнопку нажатия, периодически извлекайте данные в зависимости от значения скорости обновления пользователя и сохраняйте все ответы в массиве ключ-значение. Ответ будет использован для рисования Chart.js.
Любое предложение и спасибо.
Код:
$('#submit-button').click(function(e){
var speed = $('#update-speed-input').val();
var variables = $('#variables-select-input').val();
function doPoll(speed,variables){
$.post("{{ route('getFilterUnitData') }}", {
speed: speed,
variables: variables,
}, function(response) {
console.info(response);
setTimeout(doPoll,speed);
});
}
$.ajax({
url: "{{ route('getFilterUnitData') }}",
method: 'post',
data: {
speed: speed,
variables: variables
}
,
success: function(response){
console.info(count(response));
},
error: function(result) {
console.info(result);
},
complete: setTimeout(doPoll(speed,variables), speed)
});
});



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы пытались присвоить значения объекту «окно»? например, для window.speed и window.variables
Скорость и переменные находятся внутри области действия функции, а не глобальны.