gpt4 book ai didi

javascript - 以处理错误的方式启动javascript promise bluebird链

转载 作者:搜寻专家 更新时间:2023-11-01 00:23:00 26 4
gpt4 key购买 nike

这样做的动机是能够用结尾的 .catch 捕获所有可能的错误,即使是在初始同步代码中发生的错误。

我想像这样开始我的 promise 链:

const bbPromise = require('bluebird');
bbPromise.do(() => {
someTask(); // Could throw
return someVar.doSomeOtherTaskAsync();
})
.then((result) => {
// Do something with result
})
.catch((err) => {
console.log('err: ', err);
});

是否有像bbPromise.do 函数那样工作的函数? bbPromise.resolve 只是给了我传入的未执行的整个 lambda 函数。

我知道我可以做这样的事情:

bbPromise.bind({}).then(() => {
someTask(); // Could throw
return someVar.doSomeOtherTaskAsync();
})
...

甚至:

new bbPromise((resolve, reject) => {
someTask(); // Could throw
return someVar.doSomeOtherTaskAsync().then(resolve).catch(reject);
})
...

但是这些有点间接。有没有一种通过执行一个可以返回 promise 的函数来启动 promise 链的好方法,并且在结尾的 .catch 中捕获了错误?

最佳答案

听起来您正在寻找 Promise.try . Promise.resolve 适用于您已经有一个值并想从中构建一个 promise 链,但如果您想运行一些可能抛出的代码,请使用 Promise.try 相反。

try 获取并执行一个函数,以与 then 相同的方式处理任何同步 异常。你最终会得到类似的东西:

bbPromise.try(someTask).then(() => {
return someVar.doSomeOtherTaskAsync();
}).then((result) => {
// Do something with result
}).catch((err) => {
console.log('err: ', err);
});

关于javascript - 以处理错误的方式启动javascript promise bluebird链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36134791/

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