@tuxx

Что не так с кодом async\await?

Есть код:
let Load = (item, config) =>
{
	return new Promise((resolve, reject) =>
	{
		let link = "URL";
		
		Request.get(link, {timeout: 5 * second}, (err, response, body) =>
		{
			if(err)
			{
				reject(err);
			}
			else
			{
				resolve(body);
			}
		});
	});
};

let AwaitLoad = async (item, config) =>
{
	let result = await LoadSteamPrice(item, config);
	console.log(result);

	return result;
};


Вызов AwaitLoad идет в forEach:
Info.forEach(item =>
{
	let result = AwaitLoad(item, config);
	console.log(result);
});

// далее должен быть еще код по обработке Info и всякого другого в синхронном порядке


То есть мне нужно последовательно обратиться по определенным адресам и получить оттуда информацию. И часть полученно информации добавить к элементам из Info. console.log в forEach возвращает Promise { <pending> }, но при этом после отработки console.log в AwaitLoad нужный мен результат выполнения.

Загрузить их все параллельно через Promise.all не могу, т.к. уже 3-4 параллельных запроса возвращают ответ 429 Too many requests, а при последовательном опросе могу хоть сотню запросов отправить.

После этого forEach мне нужно обработать Info далее в синхронном порядке.

Node.js v8.1.2
  • Вопрос задан
  • 431 просмотр
Решения вопроса 1
В цикле нужен тоже await. А в функции самой можно убрать, если там просто return foo(a,b)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы