Я использую библиотеку Bluebird с NodeJS (с каркасом) SailsJSКак захватить событие, в котором разрешены все обещания в массиве?
Promise.all()
не захватывая событие, когда все обещания в promises
массиве будут решены.
Какие изменения должны быть сделаны для решения этой проблемы?
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 Я хочу решить внешнее обещание ('resolveGlobal()'), когда все обещания в массиве 'promises' решены. –
Избегайте антипаттера конструктора '' Promise' (http://stackoverflow.com/q/23803743/1048572)! – Bergi