为什么没有定义 AbortController?

kar*_*017 8 javascript fetch

我希望能够使用 fetch API 取消请求并使用new AbortController()不幸的是我在控制台中收到一个错误:AbortController is not defined

//  this.aborter = new XMLHttpRequest()  no error
    this.aborter = new AbortController() error
Run Code Online (Sandbox Code Playgroud)

可能是什么原因?我只使用 vanilla JS,没有任何依赖项。

Phi*_*ßen 5

AbortController上的 MDN 文档包含支持的浏览器的最新表。

尽管当前浏览器应该很好地支持该 API,但该 API 仍被标记为实验性的。Firefox 自 2017 年 11 月 (FF 57) 起开始使用,Chrome 于 2018 年 4 月 (Chrome 66) 紧随其后。


pla*_*erd 5

尝试

this.aborter = new window.AbortController();
Run Code Online (Sandbox Code Playgroud)

我发现在 Chrome (v77) 上它无法识别 AbortController 并将其指定为窗口属性。

另外,在你打电话之后

this.aborter.abort()
Run Code Online (Sandbox Code Playgroud)

您可能需要重新初始化

this.aborter = new window.AbortController();
Run Code Online (Sandbox Code Playgroud)

否则以后的 fetch 语句将不起作用(状态将被中止并抛出错误!)。