我正在创建一个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
并继续。答案 0 :(得分:0)
我想您想要类似以下脚本的内容。使用try / catch进行async / await进行错误处理,这可能是您正在寻找的缺失难题。
async function getMetadata() {
const remainingMovies = await getRemainingMovies();
remainingMovies.map(movie => {
try {
return await fetchMetadata(movie);
} catch (err) {
return getMetadata();
}
});
}