Я программирую расписание, которое содержит несколько таймеров. Когда я добавляю новый таймер, он создает html для показа таймера и отправляет запрос Ajax put для создания записи таймера на сервере. затем, когда Ajax-вызов завершается, я использую идентификатор записи в ответе и вводю его в html. У меня настроено программирование, в котором, если я нажму кнопку «Пуск» на любом таймере, он остановит все запущенные часы, взяв запись этих часов и отправив их на сервер. Мне нужно разобраться с ситуацией, когда кто-то нажимает кнопку «Стоп» на таймере, а вновь добавленный таймер ожидает идентификатор записи с сервера. Я посмотрел в ajaxComplete, но я надеюсь на что-то более прямое, а не ловить все для всех запущенных запросов Ajax. Я не думаю, что Promise.all () может работать, потому что программирование для создания и получения идентификатора записи содержится в его собственной функции. Я надеялся сделать что-то похожее на Promise.all (ajaxOfPutRequest), но этот ajaxOfPutRequest вызывается вне функции stopTimer. Вот соответствующий код:
$('button').on('click', function () {
var createRecord = () => {
$(this).parent().addClass('toggled')
//collect data from element
$.ajax({
url: url,
type: 'POST',
headers: headers,
data: data,
success: function (response) {
$(this).attr('id', response.record.id)
},
error: function () {}
})
}
createRecord()
})
$('stopTimerButton').on('click', function () {
var stopTimer = () => {
$('#' + idOfRunningClock).each(function () {
//collect data
$.ajax({
url: url,
type: 'PUT',
headers: headers,
data: data,
success: function () {
Knack.hideSpinner();
}
});
}
}
Посмотрите, как отдельные функции? Они не происходят от одного и того же eventListener, и я не знаю, как заставить вторую функцию ждать завершения первой функции, поскольку вторая функция зависит от данных (идентификатора записи) первой функции. Любая помощь приветствуется!