运行以下代码时,控制台将按预期显示“ HERE”,然后显示数据对象,然后显示“ DONE”。
var promises = [];
promises.push(getData('XYZ', function (data) {
console.log(data);
}));
console.log('HERE');
$.when.apply($, promises).done(function () {
console.log('DONE');
});
但是,当我执行以下操作时,它返回“ HERE”,后跟一个“ 空”数据对象,然后返回“ 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);
}
});
}