中止 API 提取后重新启动异步函数

Restart Async Function After Aborting API Fetch

我正在创建一个 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;
  }
}

这显然是一个简化版本,但本质上是:

我猜您想要类似于以下脚本的内容。使用 try/catch 处理 async/await 的错误处理,这可能是您正在寻找的缺失拼图。

async function getMetadata() {
  const remainingMovies = await getRemainingMovies();

  remainingMovies.map(movie => {
    try {
      return await fetchMetadata(movie);
    } catch (err) {
      return getMetadata();
    }
  });

}