Я создаю модуль Node.js, который берет список названий фильмов и извлекает их соответствующие метаданные из omdbapi.com .
Эти списки часто бывают очень большими и иногда (с моим текущим медленным интернет-соединением) соединение прерывается из-за слишком большого количества одновременных соединений.Поэтому я настроил метод timeout / abort, который перезапускает процесс через 30 секунд.
Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я теряю подключение к Интернету или соединение прекращается, оно просто выходит из процесса, ине перезапускает соединение.
Пример:
async function getMetadata () {
const remainingMovies = await getRemainingMovies();
for (let i = 0; i < remainingMovies.length;i++) {
const { data, didTimeout } = await fetchMetadata(remainingMovies[i]);
// Update "remainingMovies" Array...
if (didTimeout) {
getMetadata();
break;
}
}
if (!didTimeout) {
return data;
}
}
Это, очевидно, упрощенная версия, но по существу:
- The
getMetadata
Функция получает массив remainingMovies
из глобальной области. - Извлекает метаданные с сервера с помощью функции
fetchMetadata
. - Проверяет, истекло или нет соединение.
- Если это произошло, следует перезапустить функцию и попытаться снова подключиться.
- Если время не истекло, завершите
for loop
и продолжайте.