Изменить URL после $ .when - PullRequest
0 голосов
/ 09 января 2019

Когда я запускаю следующий код, моя консоль будет отображать «ЗДЕСЬ», затем мой объект данных, а затем «ГОТОВО», как и ожидалось.

var promises = [];
promises.push(getData('XYZ', function (data) {
  console.log(data);
}));
console.log('HERE');
$.when.apply($, promises).done(function () {
  console.log('DONE');
});

Но когда я делаю следующее, он возвращает «ЗДЕСЬ», за которым следует пустой объект данных, затем «ГОТОВО» и страница перенаправляется. Почему мой объект пуст?

var promises = [];
promises.push(getData('XYZ', function(data) {
  console.log(data);
}));
console.log('HERE');
$.when.apply($, promises).done(function() {
  console.log('DONE');
  window.location.replace("/")
});

Я знаю, что могу сделать перенаправление в обратном вызове, но мне любопытно, почему это не работает. моя функция getData () ниже. Ошибка не регистрируется.

function getData(id, callback) {
  var url = "/api/id/" + id;
  console.log(url);
  return $.ajax({
    type: 'GET',
    url: url,
    contentType: 'application/json; charset=utf-8',
    dataType: "json",
    success: function (result) {
      callback(result);
    },
    error: function (error) {
      console.log(error);
    }
  });
}
...