我正在创建一个 Node.js 模块,它获取电影标题列表并从omdbapi.com获取它们各自的元数据。
这些列表通常非常大,有时(在我当前的互联网连接速度较慢的情况下)由于并发连接过多,连接会停止。所以我设置了一个超时/中止方法,在 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
并继续。