Javascript 中止API获取后重新启动异步函数
我正在创建一个Node.js模块,它获取电影标题列表并从中获取各自的元数据 这些列表通常非常大,有时(我当前的internet连接速度很慢)由于并发连接太多而导致连接暂停。因此,我设置了一个超时/中止方法,在30秒后重新启动进程 我遇到的问题是,每当我失去internet连接或连接暂停时,它就会退出进程,而不会重新启动连接 示例:Javascript 中止API获取后重新启动异步函数,javascript,node.js,asynchronous,node-fetch,Javascript,Node.js,Asynchronous,Node Fetch,我正在创建一个Node.js模块,它获取电影标题列表并从中获取各自的元数据 这些列表通常非常大,有时(我当前的internet连接速度很慢)由于并发连接太多而导致连接暂停。因此,我设置了一个超时/中止方法,在30秒后重新启动进程 我遇到的问题是,每当我失去internet连接或连接暂停时,它就会退出进程,而不会重新启动连接 示例: async function getMetadata () { const remainingMovies = await getRemainingMovies(
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(){
const remainingMovies=等待getRemainingMovies();
for(设i=0;i- 函数从全局范围获取
数组remainingMovies
- 使用
函数从服务器获取元数据fetchMetadata
- 检查连接是否超时
- 如果成功,则应重新启动该功能并尝试再次连接
- 如果没有超时,则完成循环的
并继续
async function getMetadata() {
const remainingMovies = await getRemainingMovies();
remainingMovies.map(movie => {
try {
return await fetchMetadata(movie);
} catch (err) {
return getMetadata();
}
});
}
您可能希望使用
try/catch
获取和处理catch中的错误场景,就像使用wait
一样,您的代码将在该行上等待(函数的其余部分不会执行),直到从服务器返回内容,否则它将出错,而您没有处理程序。我甚至没有考虑使用Array.map()
在这种情况下。因此fetchMetadata
返回一个对象
,如果它抛出一个错误,它将捕获它并重新运行getMetadata
函数。我想这就是我要找的。