【发布时间】:2019-11-21 11:29:37
【问题描述】:
我有一个捕捉错误的承诺链,应该在那个捕捉中执行另一个异步操作(返回一个承诺),然后应该去最后一个捕捉,但我不知道该怎么做
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}`))
这个的输出是
最终结果:玫瑰不是红色的
我希望第一个捕获返回 promiseWhichWillResolve 但不知何故而不是去最后一个'then'它应该去最后一个'catch'。
如果我只是使用
.catch((error) => {
promiseWhichWillResolve())
throw error
}
这将导致 promiseWhichWillResolve 不被等待。
我该怎么做?
【问题讨论】:
-
我认为你不能在
.catch之后再做一个.then,也许可以尝试修改你的案例顺序。
标签: javascript asynchronous ecmascript-6 promise