2
这样做的动机是能够捕获所有可能的错误,结尾.catch
,即使是在初始同步代码中发生的错误。启动JavaScript诺言蓝鸟链处理错误的方式
我要开始我的诺言链像这样:
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);
})
...
但这些都有点间接的。是否有一种很好的方式通过执行一个可能会返回承诺的函数来启动承诺链,并且在结尾.catch
中有错误?