gpt4 book ai didi

javascript - 返回 promise 的 promise

转载 作者:行者123 更新时间:2023-11-29 22:07:50 25 4
gpt4 key购买 nike

我有嵌套的 promise ,其中一个函数调用另一个函数并且都返回 promise 。函数 b 正在调用函数 a 并且当函数 a 的 promise 完成时,函数 b 解析它自己的延迟并传递来自 a 的结果及其自身的结果。

function a(){
var d = $.Deferred();
makeSomeAsyncCall(function(){
d.resolve('a')
})
return d.promise();
}

function b(){
var d = $.Deferred();
a= a()

a.done(function(a){d.resolve(a, 'b')})
.fail(function(a){d.reject(a, 'b')})

return d.promise();

}

b().done(function(a, b){console.log(a, b)})
.fail(function(a, b){console.log(a, b)})

我想知道是否有办法在不创建延迟函数的情况下解决这个问题 b

最佳答案

I wonder if there is way to wright this without creating a deferred in function b

是的,有。链接两个(可能是异步的)函数是主要的唯一目的 promise方法,then (在旧版本中称为 pipe)。简单的写

function b() {
return a().then(function success(aresult) {
return [aresult, "b"];
}, function error(aerror) {
return $.Deferred().reject(aerror, "b");
});
}

我不确定您是否真的需要那个error 处理程序,如果您不指定它,那么aerror 将自动传播。

关于javascript - 返回 promise 的 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19939025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com