Как выполнить массив обещаний синхронно с задержкой - PullRequest
0 голосов
/ 30 октября 2018

У меня есть массив объектов JSON. Я хочу перебрать массив, и для каждого объекта проверить некоторые параметры, и, если определенные условия выполняются, сделать запрос на создание записи, используя модуль Air-table .

Из-за ограничения скорости я хочу регулировать скорость выполнения этих запросов, по сути вызывая функции последовательно, а также вводя задержку между ними.

Обещания всегда выводили меня из себя. Как бы перебрать массив для достижения этого с обещаниями. Могу ли я сделать это с Async Await? Я знаю, что некоторые библиотеки обещаний, такие как Bluebird, имеют как функцию задержки, так и параллельную функцию, но я не совсем понимаю, как правильно их использовать.

1 Ответ

0 голосов
/ 30 октября 2018

Если вы хотите выполнять итерацию по массиву синхронно, вы можете использовать конструкцию for ... of:

async function doSomethingWithArray(array, delayTime) {
  for (const item of array) {
    await someMethod(item);
    await delay(delayTime);
  }
}

самая простая функция задержки:

function delay(delayTime) {
  return new Promise(resolve => setTimeout(resolve, delayTime));
}
...