jQuery Promises和Deferred,混乱

时间:2014-09-19 22:05:18

标签: javascript jquery promise deferred

我以为我终于了解了承诺,但似乎我有点偏离。

任何人都可以让我摆脱困境并解释我在这里做错了什么:

t010 = { myGet: function(url) { var result = new $.Deferred(); result.resolve(ajaxRequest(url)); } }

然后我的main方法调用它:

$.when(t010.myGet(seatId), t010.myGet(roomId)).then(function(d1, d2) { console.log(d1); }

我每次只是控制日志未定义。

我认为我想要达到的目标是相当明显的,我想两次调用myGet,当两者都完成后,对结果做一些事情。

全部谢谢!

1 个答案:

答案 0 :(得分:2)

您必须返回使用$.when

的承诺
t010 = {
  myGet: function(url) {
    var result = new $.Deferred();
    result.resolve(ajaxRequest(url));

    return resolve.promise();
  }
}

但是这会立即解决承诺,传回ajaxRequest函数的结果,当时可能是undefined? 但是,ajaxRequest已经看起来像是返回一个承诺,你可以直接返回

t010 = {
  myGet: function(url) {
    return ajaxRequest(url));
  }
}

假设你的ajax函数看起来像

function ajaxRequest(url) {

    return $.ajax({
        url : url
    });

}