JS fetch 是否可以不等待响应?

kke*_*ley 3 javascript fetch-api

我有一个日志记录 API,它在链接之前执行。该链接会将用户重定向到其他地方,并且我在用户重定向之前执行 fetch。所以现在的脚本是这样的:

loggingAPI({
    timestamp: moment()
})
window.location = "http://.......com"
Run Code Online (Sandbox Code Playgroud)

日志记录 api 只是一个普通的获取包装器。

但是,服务器现在没有收到 API 请求。我认为这是因为它甚至没有机会将请求发送到 api。

那么我可以等待请求发送而不等待响应吗?

Jar*_*a X 6

使用sendBeacon非常简单

如果没有看到您的函数代码,loggingAPI以下是最好的猜测

注意:sendBeacon使用 POST 请求,因此服务器端可能需要修改以接受此类请求 - 不过,鉴于您loggingAPI正在发送数据,我想它已经在使用POST- 所以这可能不是问题

在代码中的某个位置,为 Windows 设置卸载事件

window.addEventListener("unload", () => {
    sendBeacon("same url as loggingAPI", JSON.stringify({timestamp: moment()}));
}, false);
Run Code Online (Sandbox Code Playgroud)

然后,当你

window.location = "http://.......com"
Run Code Online (Sandbox Code Playgroud)

loggingAPI函数会被调用

编辑:抱歉,我没有完全充实代码,我错过了几个步骤!