@jenya7771

Как с помощью async выполнить n-ое количество параллельных запросов?

Здравствуйте, как с помощью async выполнить n-ое количество параллельных запросов, вот пример:
for (var i in data) {

					request({
						url: 'https://google.com',
						agentClass: Agent,
						agentOptions: {
							socksHost: data[i].host,
							socksPort: data[i].port
						}

					}, function(errChek, resChek) {

						if (!errChek) {

							data[i].status = true;
							
						} else {

							data[i].status = false;
							
						}
					})
				}
  • Вопрос задан
  • 1347 просмотров
Решения вопроса 1
async.times
async.each


async.each(data, (row, cb) => {
	request({
		url: 'https://google.com',
		agentClass: Agent,
		agentOptions: {
		  socksHost: row.host,
		  socksPort: row.port
		}
	}, (errChek, resChek) => {
		row.status = !errChek;
		return cb(null, row);
	});
}, (err, results) => {
	// complete
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
SPAHI4
@SPAHI4
реактовцы - это не девы, а прокидыватели пропсов
await Promise.all(data.map(i => request(i)));
Ответ написан
Комментировать
Либо так:
await Promise.all(...promises)

Либо так:
const p1 = callSomeAsyncFunction(),
      p2 = callAnotherAsyncFunction(),
      p3 = callAnotherAsyncFunction();

await p1;
await p2;
await p3;


Во втором примере мы сразу запустили три функции одновременно. Далее, когда они уже начали работу, мы ожидаем завершение всех трёх функций. При этом, поскольку они уже исправно запущены и выполняют нужные действия, никакой лишней задержки не будет, ведь они уже запущены.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы