窗口中是否有显示何时进行网络调用的属性?

Is there a property on the window that shows when network calls are being made?

提问人:1.21 gigawatts 提问时间:11/17/2023 更新时间:11/17/2023 访问量:15

问:

窗口对象或文档上是否有指示是否正在进行网络调用的属性?

我的页面上到处都有这样的代码,当进行网络调用时会显示一个图标:

  showNetworkIcon();
  var response = await fetch(url);
  var data = await response.json();
  showNetworkIcon(false);

但是,如果同时有两个呼叫,则其中一个将在仍有网络呼叫发生时隐藏网络呼叫指示器。

有没有这样的属性:

var networkCall = window.requestsOpen;

如果该值为 true,则我无法隐藏网络图标。

或者,如果有一个事件我可以听:

window.addEventListener("networkCallOpen", ()=>{ showNetworkIcon() });
window.addEventListener("networkCallClosed", ()=>{ hideNetworkIcon() });

上述的问题是,如果两个调用仍然存在,一个调用将在另一个调用之前关闭,因此仍然需要检查一个属性。除非存在所有呼叫关闭事件。

window.addEventListener("allNetworkCallsClosed", ()=>{ hideNetworkIcon() });
JavaScript 网络 浏览器

评论

1赞 dandavis 11/17/2023
没有活动,阿法克。你可以包装(或者如果你不想修改现有代码,可以踩在上面)以在每次使用初始化/拆解代码时运行它。不过,您仍然会有竞争条件。与其在完成后隐藏,不如查看是否有剩余的呼叫,如果有,则不执行任何操作。简单的方法是在 fetch() 上递增计数器,并在 then() 上递减(或在 await 之后),只有当计数器为零时,才会隐藏图标。您需要更改的只是 showNetworkIcon() 以保留一个计数器。fetch()
0赞 1.21 gigawatts 11/17/2023
@dandavis这是个好主意。我正在尝试获取一行,我可以同时处理图标问题

答: 暂无答案