gpt4 book ai didi

javascript - 处理 promise 链中的错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:56:52 25 4
gpt4 key购买 nike

promise 链中可能会出现两类错误。

  1. 从 promise 链中抛出的错误(由 .catch 处理)
  2. 配置 promise 链时抛出的错误

我的问题是如何最好地处理后者。

例如,在下面的 .catch 中,它不会在 foo 有机会返回 promise 之前捕捉到抛出的异常。

function go() {
return foo()
.then(bar)
.catch(bam);
}

很明显,我可以将 go 的内容包装在 try-catch block 中。

但是从 foo 中的 catch block 返回一个立即被拒绝的 promise 以“维护 API”并为所有可能发生的情况提供一个基于 promise 的接口(interface)会更好吗?

最佳答案

或者,您可以在链中包含 foo,如下所示

Promise.resolve()
.then(foo)
.then(bar)
.catch(bam);

现在,即使 foo 抛出异常,bam 也会处理它。


或者,在 foo 上构建一个包装器,

function promiseWrapper(func) {
try {
return Promise.resolve(func());
} catch (e) {
return Promise.reject(e);
}
}

然后像这样使用它,而不是 foo

function go() {
return promiseWrapper(foo)
.then(bar)
.catch(bam);
}

关于javascript - 处理 promise 链中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38434404/

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