Skip to content

AbortSignal.timeout() #53

@hax

Description

@hax

常见的给请求加 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) })

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions