Реализация экспоненциального отката с 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. Эта реализация не работает.
Любая идея, как я могу реализовать это правильно?