Показать сообщение отдельно
  #7 (permalink)  
Старый 26.04.2015, 23:33
Аспирант
Отправить личное сообщение для FoxTrix Посмотреть профиль Найти все сообщения от FoxTrix
 
Регистрация: 27.07.2012
Сообщений: 73

переписал на обычные функции, работает, получилось нечто такое:
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 в том же порядке что вызываются, и не получится что вернулся сначала второй, потом первый, т.к. по второй ссылке сервер ответил быстрее?

Последний раз редактировалось FoxTrix, 27.04.2015 в 01:54.
Ответить с цитированием