{ foo() .then((result) => { res.send(result) }) .-6ren">
gpt4 book ai didi

javascript - 如何在 .then .catch 链中有条件地运行 .then() 函数?

转载 作者:行者123 更新时间:2023-12-03 23:30:57 24 4
gpt4 key购买 nike

我的代码是这样的:

router.post("/", (req, res, next) => {
foo()
.then((result) => {
res.send(result)
})
.catch((error) => {
cosnole.log(error)
})
//I only want the bar() function and everything below it to run if the first promise is rejected and the first .catch function ran
bar()
.then((data) => {
res.send(data)
})
.catch((error) => {
console.log(error)
})

})

只有当第一个 promise 被拒绝并且 .catch 函数被触发时,我才想只运行 bar() 函数和它之后的 .then .catch 函数。

我已经试过了:

router.post("/", (req, res, next) => {
rejected = false
foo()
.then((result) => {
res.send(result)
})
.catch((error) => {
rejected = true
console.log(error)
})
if(rejected == true)
bar()
.then((data) => {
res.send(data)
})
.catch((error) => {
console.log(error)
})

})

但是当第一个 foo() 函数的错误被捕获并且 promise 被拒绝时,bar() 函数永远不会被执行。

最佳答案

将调用移至捕获物内部

router.post("/", (req, res, next) => {
foo()
.then((result) => {
res.send(result)
})
.catch((error) => {
cosnole.log(error);
return bar()
.then((data) => {
res.send(data)
})
.catch((error) => {
console.log(error)
});
});
});

关于javascript - 如何在 .then .catch 链中有条件地运行 .then() 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49011840/

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