如何将 navigator.sendBeacon 转换为 fetch 调用?

问题描述 投票:0回答:0

我看过很多一些文档/文章建议带有

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
不关心响应,只关心数据是否被发出。

promise fetch fetch-api httpresponse sendbeacon
© www.soinside.com 2019 - 2024. All rights reserved.