私は約束のためにブルーバードを使用していますが、ブルーバードではない約束を返すライブラリも使用しています。 .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