Когда я запускаю следующий код, моя консоль будет отображать «ЗДЕСЬ», затем мой объект данных, а затем «ГОТОВО», как и ожидалось.
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);
}
});
}