嘿伙计,
今天是学习如何使用 ReactQuery 中止正在进行的请求的时候了。
在转到示例之前,我想介绍一下AbortSignal。
AbortSignal 是一个 javascript 接口,用于中止正在进行的方法。通常,您可以通过AbortController创建 AbortSignal ,这简化了 AbortSignal 的创建和执行。当你创建一个 AbortController ( controller = new AbortController()) 时,你会得到它的一个实例,它有两个核心概念:信号 ( controller.signal) 和中止方法 ( controller.abort())。
第一个很重要,因为它包含信号及其状态,第二个很重要,因为它允许您将中止的状态从 更改false为true。
使用这两个接口,在 javascript 中,您可以立即处理使用fetch API创建的 HTTP 请求的中止,如果需要,也可以使用axios 。当您创建一个请求时,两者都接受一个信号,如果您中止该信号,您可以中止该请求。
AbortSignal 还有一个名为的静态方法timeout,它接受一个描述超时时间(以毫秒为单位)的数字。使用此方法,您可以轻松创建一个信号,该信号会在一段时间后更改其状态。如果您想处理请求超时,这很常见。
只是一个简单的例子,可以让您了解这些接口的强大功能。
try {
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), 5000);
const res = await fetch(url, {
signal: controller.signal });
const body = await res.json();
} catch (e) {