gpt4 book ai didi

javascript - 我怎样才能从捕获中返回一个 Promise 然后拒绝下一个捕获?

转载 作者:行者123 更新时间:2023-11-30 13:47:37 24 4
gpt4 key购买 nike

我有一个捕获错误的 promise 链,应该在该捕获中执行另一个异步操作(返回一个 promise ),然后应该转到最后一个捕获,但我不知道该怎么做

const roses_color = "blue"

new Promise((resolve, reject) => {
(roses_color === "red") ? resolve("are") : reject("are not")
})
.then((result) =>
new Promise((resolve, reject) => {
setTimeout(() => resolve(`Roses ${result} red`), 1000)
})
)
.catch((error) => promiseWhichWillResolve())
.then((result) => res.send(`This is true: ${result}`))
.catch((error) => res.send(`ERROR: ${error}`))

这个的输出是

Final result: Roses are not red

我希望发生的是第一个 catch 返回 promiseWhichWillResolve 但不知何故而不是最后一个 'then' 它应该转到最后一个 'catch'。

如果我只是使用

.catch((error) => {
promiseWhichWillResolve())
throw error
}

这将导致不等待 promiseWhichWillResolve。

我该怎么做?

最佳答案

我刚刚意识到有一种非常简单的方法可以通过在第一个 catch 中使用 async/await 来做到这一点。这将确保异步操作完成,然后抛出以进行最后一次捕获。

const roses_color = "blue"

new Promise((resolve, reject) => {
(roses_color === "red") ? resolve("are") : reject("are not")
})
.then((result) =>
new Promise((resolve, reject) => {
setTimeout(() => resolve(`Roses ${result} red`), 1000)
})
)
.catch(async (error) => {
await promiseWhichWillResolve()

throw `Roses ${error} red`
})
.then((result) => res.send(`This is true: ${result}`))
.catch((error) => res.send(`ERROR: ${error}`))

输出

ERROR: Roses are not red

关于javascript - 我怎样才能从捕获中返回一个 Promise 然后拒绝下一个捕获?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58973944/

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