如何解决last last()调用内部问题

时间:2015-11-23 01:51:08

标签: javascript jquery promise

我有一个函数,它需要一个应该用3个参数解决的promise。

问题是返回promise的函数必须等待另一个延迟的

function load(){
  var d = $.Deferred();

  this.getData().then(function(){
    ....
    d.resolve(1, 2, 3);
  });

  return d.promise();
}


load().then(function(a, b, c){
  ....
});

有什么方法可以使用getData()已经返回的promise并避免创建另一个延迟对象?问题是getData返回的promise在调用then()之前解析,我不知道如何用新参数再次解析它

1 个答案:

答案 0 :(得分:3)

您不需要您正在创建的额外延期。只需从外部函数返回已有的promise,然后从.then()处理程序中返回一个值。您在.then()处理程序中返回的值将成为返回的promise的新解析值。这是承诺链,您可以像这样实现它:

function load(){
  return this.getData().then(function(){
    ....
    return [1, 2, 3];
  });
}


load().then(function(array){
    console.log(array);    // [1,2,3]
});

仅供参考,请注意我将返回值更改为值数组,因为您只能从函数返回单个值/对象。这意味着load().then(...)中出现的值将是该数组。