import {
"q2316367743/moonhttp/abort",
}| 方法 | 说明 |
|---|---|
| AbortController::new() | 造一个尚未取消的控制器 |
| AbortController::signal() | 取出它的信号 |
| AbortController::abort(reason?) | 发起取消;同步、不抛错、幂等、一次性 |
| AbortSignal::abort(reason?) | 静态构造:出生就已取消的信号 |
| AbortSignal::aborted() | 是否已取消 |
| AbortSignal::reason() | 取消理由,String?(默认文案在错误层) |
| AbortSignal::throw_if_aborted() | 已取消就抛 AbortError |
let controller = @abort.AbortController::new()
// 信号按请求传:它是入口的 signal? 参数,不在 Config 上
client.request(Config::new("/reports/big.csv"), signal=controller.signal())
// 另一条协程里(UI 的停止按钮、看门狗、超时兜底):
controller.abort(reason="用户点了停止")// 已经不该再发的请求:把「已取消」变成一个可以直接传的值
///|
let signal = @abort.AbortSignal::abort(reason="上游已整体超时")pub(all) suberror AbortError {
Aborted(String?)
}pub struct AbortController {
// private fields
}let controller = AbortController::new()
// 信号按请求传(它是入口的 signal? 参数,不属于配置):
client.request(Config::new("/reports/big.csv"), signal=controller.signal())
// 另一处(另一个协程、或某个 UI 回调里):
controller.abort(reason="用户点了停止")pub struct AbortSignal {
// private fields
}// 串行流程里,每段开头查一次;已经取消就抛 AbortError
signal.throw_if_aborted()Install
Download zipaxios 风格的 MoonBit HTTP 客户端:实例与配置合并、四种请求体形态、流式与 SSE、自动重定向
Dependencies