以处理错误的方式启动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);
});