hax.github.com icon indicating copy to clipboard operation
hax.github.com copied to clipboard

AbortSignal.timeout()

Open hax opened this issue 2 years ago • 1 comments

常见的给请求加 timeout 的代码:

async function get(url: string, timeout: number) {
  const timeoutPromise = new Promise((_, reject) => {
    setTimeout(() => reject(new Error("Timeout")), timeout);
  })
  const fetchPromise = fetch(url)
  // 使用Promise.race来竞赛fetch请求和超时Promise
  return Promise.race([fetchPromise, timeoutPromise])
}

这代码work,但利用好API可以更简单:

  return fetch(url, { signal: AbortSignal.timeout(timeout) })

hax avatar Nov 08 '23 05:11 hax

Off topic:有些IDE有显示 parameter name 的选项,但在这个例子里感觉有点唠叨:

AbortSignal.timeout(time:timeout)

hax avatar Nov 08 '23 05:11 hax