【发布时间】:2017-06-18 23:57:28
【问题描述】:
我将 bluebird 用于承诺,但也使用返回非 bluebird 承诺的库。我想使用.asCallback。我尝试使用Promise.resolve 来包装它,这是我在网上其他地方找到的,但它隐藏了承诺链中的错误。在代码中,如果我取出then/catch,它会解决而不是从客户端调用中抛出错误,即使发生了错误。
除了使用new Promise(resolve,reject) 创建一个新的promise(这是一个显而易见的解决方案)之外,是否有更好的方法将其转换为bluebird promise,一种将任何错误传播到原始promise 链的方法?
module.exports.count = function(params, done){
var promise = client.count({
"index": config.search.index + "_" + params.index
}).then(function(response){
logger.debug(response);
}).catch(function(e){
logger.error(e);
});
return Promise.resolve(promise).asCallback(done);
【问题讨论】:
-
“它隐藏了承诺链中的错误”是什么意思?
Promise.resolve当然不会那样做。但是,您的catch()电话可能会。
标签: javascript promise bluebird