在$ .when之后更改URL

时间:2019-01-08 22:20:21

标签: jquery promise url-redirection

运行以下代码时,控制台将按预期显示“ 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);
    }
  });
}

0 个答案:

没有答案