переписал на обычные функции, работает, получилось нечто такое:
function parseUrl(url) {
return new Promise(function(resolve, reject) {
request.get(url, function(err, res, body) {
if (err) {
reject(err);
return;
}
var $=cheerio.load(
iconv.encode(
iconv.decode(
new Buffer(body,'binary'),
'win1251'),
'utf8')
);
var obj = {
h1 : $(some_selector).text(),
last : $(some_selector).text()
}
resolve(obj);
})
});
}
var urls = ["some_url", "some_url", "some_url"];
Promise.all(
urls.map(parseUrl)
).then(function(obj) {
console.log(obj);
}).catch(function(err) {
console.log('Error occured: '+err);
});
Правильно ли я понимаю что возвращаются promise в том же порядке что вызываются, и не получится что вернулся сначала второй, потом первый, т.к. по второй ссылке сервер ответил быстрее?