gpt4 book ai didi

javascript - Promise 立即处理 .catch 和 .then

转载 作者:行者123 更新时间:2023-11-30 16:44:12 25 4
gpt4 key购买 nike

无论是 catch 还是 then,我都想使用一个处理程序来管理以下 promise 。有没有 Bluebird 方法?我尝试了 .finally.done 但没有成功。

var example = function(throwError){
return Promise.resolve().then(function(){
if(throwError) throw new Error("test error")
return throwError
})
}

example(true).SOMETHING(function(value){
console.log(value) // error
})

example(false).SOMETHING(function(value){
console.log(value) // false
})

我想停止编写这样的代码。

function myPromiseCatch(){
return myPromise
.apply(null, _.values(arguments))
.catch(function(e){
return e
})
}

最佳答案

根据 Thomas 的想法,这里有另一种相当简单的可能性:

// create method that will always get called whether reject or resolve
Promise.prototype.always = function(fn) {
return this.then(fn, fn);
};

// test function to resolve or reject based on input
function example(throwError){
return new Promise(function(resolve, reject) {
if (throwError) throw new Error("test error")
resolve(throwError);
});
}

// test that will resolve
example(false).always(function(value){
console.log("always: " + value); // false
});

// test that will reject
example(true).always(function(value) {
console.log("always: " + value); // error
});

这会生成以下输出:

always: false
always: Error: test error

因此,在这两种情况下都传递了值。如果需要,您可以检查它的类型,但如果您真的需要知道它是已解决还是被拒绝,那么单独的处理程序可能无论如何都是正确的方法。

关于javascript - Promise 立即处理 .catch 和 .then,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31495313/

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