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

链接时Jquery延迟对象问题。然后,jquery,ajax,jquery-deferred,Jquery,Ajax,Jquery Deferred,我对返回的链接数据有问题,然后是第一个延迟数据。第一个例子是: api.getData().done(function(data){ api.getData2().done( function(data2){ $.log('success', data2); }); }); 但是第二个示例应该可以运行,第二个.then()使用数据2,但由于某些原因,它与数据1相同 api.getData().then(function(data1){ return ap

我对返回的链接数据有问题,然后是第一个延迟数据。第一个例子是:

api.getData().done(function(data){
  api.getData2().done(
    function(data2){
      $.log('success', data2);
    });
  });
但是第二个示例应该可以运行,第二个.then()使用数据2,但由于某些原因,它与数据1相同

api.getData().then(function(data1){
  return api.getData2();
}).then(
function(data2){
  $.log('success', data2);
});
有什么建议吗?

将接受两个返回承诺的异步函数,并在这两个函数都完成时执行.then()函数:

$.when( api.getData(), api.getData2() ).done(function(data, data2) {
    $.log('success', data2);
});
如果出于某种原因(比如需要数据),您需要在
getData2()
之前执行
getData()
,那么确实没有必要执行
。然后()
,因为您的第一个示例似乎足够有效?

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


你能发布api.getData2的代码吗?如果我没记错的话,
api.getData2
必须返回一个promise对象才能正常工作,它还必须在某个时候解析延迟对象。我以前也遇到过这个问题。此外,您可以使用.then(相当于.done和.fail)完成您的链
api.getData().pipe(function(data1){
  return api.getData2();
}).then(
function(data2){
  $.log('success', data2);
});