2017-02-02 5 views
0

Я использую 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); 
+0

Что вы подразумеваете под словом «* он скрывает ошибки в цепочке обещаний»? 'Promise.resolve', конечно, этого не делает. Однако вызов 'catch()' может быть. – Bergi

ответ

1

Promise.resolveделает распространяются ошибки. Ваша проблема заключается в том, что catch обрабатывает их, прежде чем они смогут достичь resolve. Вы должны делать

function count(params, done){ 
    return Promise.resolve(client.count({ 
    "index": config.search.index + "_" + params.index 
    })).then(function(response){ 
    logger.debug(response); 
    return response; // important! 
    }, function(e){ 
    logger.error(e); 
    throw e; // important! 
    }).asCallback(done); 
} 
+0

Возможно, это нечто другое в цепочке обещаний родителей. Я добавил catch только для устранения неполадок, поэтому на самом деле мой пример кода плох. Позвольте мне перепроверять. –

+0

Я думаю, что это просто ошибка с моей стороны в обработчике родительской цепочки. Я все еще учась правильно использовать обещания ... –

 Смежные вопросы

  • Нет связанных вопросов^_^