我有一个函数,它需要一个应该用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()之前解析,我不知道如何用新参数再次解析它
答案 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(...)
中出现的值将是该数组。