gpt4 book ai didi

javascript - 有没有办法将 promise 返回到 .catch 和 .then

转载 作者:太空宇宙 更新时间:2023-11-04 03:30:39 24 4
gpt4 key购买 nike

基本上我想运行相同的代码,无论代码是否抛出错误。现在我正在这样做:

.then((resp) => {
assert(false);
}, err => {
assert.equal(2, err.error.errors.length);
});
});

但我想做这样的事情:

.something((resp, err) => {
assert.equal(400, resp.statusCode)
assert.equal(2, err.error.errors.length);
}

最佳答案

可以做到...

...只需使用 catch 并从中返回一些内容,然后在 promise .catch 返回上使用 then :

thePromise
.catch(err => err)
.then(resultOrError => {
// Your code
});

您的 then 回调接收的参数(上面的 resultOrError)将是已解决的值(如果 Promise 已解决),或者是被拒绝的值(宽松地,“错误”)(如果它被拒绝)。如果你想区分它们,你自然可以在 catch 中做更多的事情。

示例(运行几次,您会看到它得到解决,并且也被拒绝):

let p = new Promise((resolve, reject) => {
setTimeout(() => {
if (Math.random() < 0.5) {
resolve("success");
} else {
reject("error");
}
}, 0);
});
p.catch(err => err).then(resultOrError => {
console.log("Got this:", resultOrError);
});

...但交替

...在使用解析值或拒绝值后,两个回调都可以调用一个通用函数:

function doSomethingNoMatterWhat() {
// ...
}

thePromise
.then(result => {
// Presumably use `result`, then:
doSomethingNoMatterWhat();
})
.catch(error => {
// Presumably use `error`, then:
doSomethingNoMatterWhat();
});

关于javascript - 有没有办法将 promise 返回到 .catch 和 .then,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38450412/

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