我看过很多一些文档/文章建议带有
fetch
标志的keepAlive
等同于sendBeacon
.
fetch('/track', {
method: 'POST',
body: getData(),
keepalive: true,
});
// Same as 👇
navigator.sendBeacon('/track', getData());
然而,
sendBeacon
实际上返回一个Promise<Boolean>
。根据MDN文档:
如果用户代理成功将数据排队等待传输,则 sendBeacon() 方法返回 true。否则,它返回 false
有没有办法用 fetch 调用来模拟这个? fetch 调用总是返回一个
Promise<Response>
。所以返回值不相同。有没有办法根据与true
相同的“数据队列”启发式来使获取调用返回false
或sendBeacon
?传统上sendBeacon
不关心响应,只关心数据是否被发出。