javascript — реализация экспоненциального отката с Node.js и Promises

Реализация экспоненциального отката с Node.js и Promises

Я делаю около 70 запросов к API в моем коде. Я получаю сообщение об ошибке, сообщающее, что я делаю запросы слишком быстро один за другим, и я решил использовать идею экспоненциального отката для решения этой проблемы.

В настоящее время мой код выглядит так:

  let backoffTime = 1; for (let i = 0; i {amp}lt; fileIds.length; i  ) { let fileId = fileIds[i]; getFileName(fileId, auth) .then((name) ={amp}gt; { // do some work }) .catch((err) ={amp}gt; { // assumes that the error is "request made too soon" backoff(backoffTime); backoffTime *= 2; i--; console.log(err); }); } function backoff(time) { let milliseconds = time * 1000; let start = (new Date()).getTime(); while (((new Date()).getTime() - start) {amp}lt; milliseconds) { // do nothing } } 

Моя функция getFileName делает запрос к API и возвращает Promise.

В настоящее время это не работает, потому что Обещания асинхронны (вроде). Мой цикл for работает очень быстро и вызывает функцию getFileName, которая делает эти запросы API очень быстрыми. Затем он получает ошибку для некоторых вызовов API, и в этом случае он обновляет backoffTime. Эта реализация не работает.

Любая идея, как я могу реализовать это правильно?

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector