我使用bluebird作爲承諾,但也使用返回非藍鳥承諾的庫。我想使用.asCallback
。我嘗試使用Promise.resolve
來包裝它,我在其他地方發現了它,但它隱藏了承諾鏈中的錯誤。在代碼中,如果我取出then/catch
,它將解決而不是從客戶端調用中引發錯誤,即使發生了錯誤。如何用藍鳥包裝承諾
除了用new Promise(resolve,reject)
這個明顯的解決方案創造新的承諾外,還有更好的方法將它轉換爲藍鳥承諾,它會將任何錯誤傳播到原始承諾鏈?
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