Выполнить функцию AJAX до изменения местоположения, статус отменен - PullRequest
0 голосов
/ 27 марта 2019

предположим, что перенаправление страницы происходит при нажатии кнопки:

<div onClick="clickButton"></div>

function clickButton(href) {

  // here is an http post request, has no callback or then or done function
  sendSomeRequest()

  location.href = 'https://www.google.com'
}

проблема в trackAjax запрос будет отменен, когда я увижу сеть, есть ли лучший способ сделать это вместо setTimeout.

также мой sendSomeRequest не имеет обратного вызова или чего-то подобного, это можно рассматривать как функцию отслеживания событий.

1 Ответ

0 голосов
/ 27 марта 2019

Лучшим решением было бы отредактировать sendSomeRequest, чтобы вернуть объект jqXHR, созданный $.post().

function sendSomeRequest() {
  return $.post('user/track')
}

, после чего вы можете связать перенаправление с ним

sendSomeRequest().then(() => {
  location.href = 'https://www.google.com'
})

Если вы не можете или не хотите редактировать sendSomeRequest(), вместо этого вы можете добавить глобальный "AJAX complete" обработчик .

$(document).ajaxComplete(() => {
  location.href = 'https://www.google.com'
})
sendSomeRequest()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...