Как узнать, когда завершился определенный вызов Ajax? - PullRequest
0 голосов
/ 20 октября 2019

Я программирую расписание, которое содержит несколько таймеров. Когда я добавляю новый таймер, он создает 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, и я не знаю, как заставить вторую функцию ждать завершения первой функции, поскольку вторая функция зависит от данных (идентификатора записи) первой функции. Любая помощь приветствуется!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...