【发布时间】:2016-03-21 23:15:51
【问题描述】:
这样做的动机是能够捕捉到结尾为.catch 的所有可能的错误,即使是在初始同步代码中发生的错误。
我想像这样开始我的承诺链:
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 中发现了错误?
【问题讨论】:
标签: javascript node.js promise bluebird