映画タイトルのリストを取得し、それぞれのメタデータをomdbapi.comから取得する Node.js モジュールを作成しています。
これらのリストは多くの場合非常に大きく、同時接続が多すぎるために(現在のインターネット接続が遅いため)接続が停止することがあります。そこで、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;
}
}
これは明らかに単純化されたバージョンですが、基本的には次のとおりです。
getMetadata
関数は、remainingMovies
グローバル スコープから配列を取得します。fetchMetadata
関数を使用してサーバーからメタデータをフェッチします。- 接続がタイムアウトしたかどうかを確認します。
- その場合、関数を再起動し、再度接続を試みます。
- タイムアウトしなかった場合は、 を終了し
for loop
て続行します。