链接时的Jquery延迟对象问题。然后

时间:2012-11-20 16:29:55

标签: jquery ajax jquery-deferred

我的链接返回数据存在问题,然后是第一个延期数据。第一个例子有效:

api.getData().done(function(data){
  api.getData2().done(
    function(data2){
      $.log('success', data2);
    });
  });

但第二个例子应该有效,第二个.then()有data2,但由于某种原因,它与data1相同。

api.getData().then(function(data1){
  return api.getData2();
}).then(
function(data2){
  $.log('success', data2);
});

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

$.when将接受两个异步函数,它们返回一个promise并在两者完成时执行.then()函数:

$.when( api.getData(), api.getData2() ).done(function(data, data2) {
    $.log('success', data2);
});

如果出于某种原因(比如需要数据),您需要在getData()之前执行getData2(),那么确实不需要.then(),因为您的第一个示例似乎足够有效?

答案 1 :(得分:1)

所以经过一些研究JQuery Deferred.Pipe我发现我无法链接。然后,而是需要使用如下所示的管道(.pipe()是可链接的):

api.getData().pipe(function(data1){
  return api.getData2();
}).then(
function(data2){
  $.log('success', data2);
});