gpt4 book ai didi

javascript - chained 然后调用错误回调执行多次

转载 作者:行者123 更新时间:2023-12-03 09:29:43 32 4
gpt4 key购买 nike

asyncFunction1
.then(asyncFunction2, errorHandlerFunction)
.then(Function3, errorHandlerFunction);

我正在开发一个 Node API 应用程序,其中使用上面的 then (使用 Promise-io)序列。我对链接的 then 语句有疑问。我有一个常见的 errorHandlerFunction ,它传递一个错误代码,用于呈现错误 json 响应。类似的东西 -

var errorHandlerFunction = function(error_code) {
res.json(message_for_error_code);
};

我遇到的问题是,当asyncFunction1函数被拒绝时,它会调用errorHandlerFunction方法两次。从日志来看,第一次正确呈现 json 响应。它被第二次调用(被 undefined 拒绝),并抛出错误。如何确保 errorHandlerFunction 运行一次后退出?

我猜我可以在 errorHandlerFunction 中检查 undefined 并仅呈现有效 error_code 的响应(这不是 >未定义)。这是正确的方法吗?我是否完全忽略了一些显而易见的事情?

最佳答案

我假设您的 promise 链必须在第一次出现错误时中断,并且不会从任何错误中恢复,然后您可以在最后添加一个错误处理程序,而不是在 promise 链的每个链接处添加错误处理程序。

我不确定您正在使用哪个 Promise 库,如果 catch 可用,您可以简单地执行以下操作:

asyncFunction1
.then(asyncFunction2)
.then(Function3)
.catch(errorHandlerFunction);

如果不可用,则:

asyncFunction1
.then(asyncFunction2)
.then(Function3)
.then(null, errorHandlerFunction);

关于javascript - chained 然后调用错误回调执行多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31553859/

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