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

以处理错误的方式启动javascript promise bluebird链,javascript,node.js,promise,bluebird,Javascript,Node.js,Promise,Bluebird,这样做的动机是能够捕获结尾为.catch的所有可能错误,甚至是在初始同步代码中发生的错误 我想这样开始我的承诺链: const bbPromise = require('bluebird'); bbPromise.do(() => { someTask(); // Could throw return someVar.doSomeOtherTaskAsync(); }) .then((result) => { // Do something with resu

这样做的动机是能够捕获结尾为
.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);
})
...

但这些都有点间接。有没有一种好方法可以通过执行一个函数来启动承诺链,该函数可以返回一个承诺,并且在结尾处捕获到错误

听起来你在找<代码>承诺。当您已经有了一个值并且想要从中构建承诺链时,解析是合适的,但是如果您想要运行一些可能抛出的代码,请使用
Promise。尝试使用

try
获取并执行一个函数,以与
相同的方式处理任何同步异常。你会得到这样的结果:

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