Я использую bluebird для обещаний, но также использую библиотеку, которая возвращает обещание, отличное от bluebird. Я хочу использовать .asCallback
. Я попытался использовать Promise.resolve
, чтобы обернуть его, который я нашел где-то в другом месте, но он скрывает ошибки в цепочке обещаний. В коде, если я вынимаю then/catch
, он решает, а не бросает ошибку из клиентского вызова, даже если произошла ошибка.Как обернуть обещание синей птицей
Помимо создания нового обещания с new Promise(resolve,reject)
, что является очевидным решением, есть ли лучший способ конвертировать его в обещание bluebird, которое будет распространять любые ошибки в оригинальной цепочке обещаний?
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()' может быть. – Bergi