私はpromises
アレイ内のすべての約束が解決されたときにアレイ内のすべての約束事が解決されたイベントをキャプチャするには?
Promise.all()
がイベントをキャプチャされていない(SailsJSフレームワークで)NodeJSでブルーバードライブラリを使用しています。
この問題を解決するには、どのような変更を行う必要がありますか?
var Promise = require("bluebird");
var request = require('request');
var http = require('http');
function searchMultiple(titles) {
var results = [];
return new Promise(function(resolveGlobal, rejectGlobal){
var url = "http://xxx.xxx";
var promises = [];
titles.forEach(function (title, index) {
promises[index] = new Promise(function (resolve, reject) {
var data = {"x":title};
request({
uri: url,
method: "POST",
body : data
}, function(error, response, body) {
return resolve(body)
}
}
},
function (error, response, body) {
console.log("error");
return resolve();
}
);
})
})
Promise.all(promises).then(function(combinedResults) {
console.log("successfully resolved all promises");
return resolveGlobal(combinedResults);
}).catch(function (reason) {
console.log("error");
return rejectGlobal();
});
})
}
「イベントをキャプチャしない」とはどういう意味ですか? –
@PankajParkar 'promises'配列のすべての約束が解決されたときに、外側の約束事(' resolveGlobal() ')を解決したいと思います。 –
['Promise'コンストラクタの反パターンを避ける](http://stackoverflow.com/q/23803743/1048572)! – Bergi