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

loggingAPI({
    timestamp: moment()
})
window.location = "http://.......com"


记录API只是普通的提取包装器。

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

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

最佳答案

使用sendBeacon非常简单

没有看到您的功能loggingAPI的代码,以下是最佳猜测


  注意:sendBeacon使用POST请求,因此可能需要修改服务器端以接受这样的请求-尽管,鉴于您的loggingAPI正在发送数据,我想它已经在使用POST-因此可能成为非发行


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

window.addEventListener("unload", () => {
    sendBeacon("same url as loggingAPI", JSON.parse({timestamp: moment()}));
}, false);


那当你

window.location = "http://.......com"


loggingAPI函数会为您调用

编辑:对不起,我没有充分充实代码,我错过了几步!

10-07 15:09