首页 > 解决方案 > 如果选项卡关闭,“fetch”调用会继续吗?

问题描述

浏览器现在提供Fetch API,您可以像这样从 JavaScript 发出网络请求:

const response = await fetch('http://example.com/movies.json');
const myJson = await response.json();

如果用户关闭调用fetch和履行承诺之间的选项卡会发生什么?浏览器会丢弃请求吗?如果调用fetch发生在unloadorbeforeunload事件中怎么办?

我知道sendBeacon是用于此目的的 API 调用,但我想知道sendBeacon现在我们是否已经过时了fetch.

标签: javascriptbrowserfetch-api

解决方案


如果在触发它的 JS 环境消失时 HTTP 请求已经发送,那么它已经发送。

如果它在此之前消失,则不会发送请求。

如果在环境消失之前 load 事件没有触发,则永远不会调用事件处理程序。它不再存在了。

如果 fetch 调用发生在 unload 或 beforeunload 事件中怎么办?

然后,很可能 JS 环境会在请求发送之前消失。

我知道 sendBeacon 是用于此目的的 API 调用

是的

但我想知道现在我们已经获取了 sendBeacon 是否已经过时。


推荐阅读