2

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

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);
});

有什么建议么?

4

2 回答 2

1

$.when将接受两个返回 promise 的异步函数,并在两者都完成后执行 .then() 函数:

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

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

于 2012-11-20T16:47:37.840 回答
1

所以经过一些研究JQuery Deferred.Pipe我发现我不能链接.then,而是需要使用如下管道(.pipe() 是可链接的):

api.getData().pipe(function(data1){
  return api.getData2();
}).then(
function(data2){
  $.log('success', data2);
});
于 2012-11-20T17:04:15.693 回答