gpt4 book ai didi

javascript - 为什么 Web Workers 中有同步 FileSystem 支持,但没有同步 WebSocket 支持?

转载 作者:行者123 更新时间:2023-12-03 02:45:03 28 4
gpt4 key购买 nike

我明白为什么浏览器 vendor 不想帮助我阻止他们的 UI 线程。但是,我不明白为什么会有:

  1. Web Workers 中没有 sleep (2)
  2. 没有同步 WebSockets API

有一个synchronous FileSystem API 。还有一个synchronous IndexedDB API 。对我来说,这似乎是一个矛盾。

最佳答案

WebWorkers 没有可用的 sleep() 函数的原因很简单:您不需要它。 sleep 是一个同步函数(它会阻塞直到返回),这在 WebWorkers 的异步上下文中没有意义。

如果您向 WebWorker 发送消息,它不会阻止等待响应;响应作为消息发送到您的消息处理函数。如果您想在发送响应之前等待一定时间,则不会使用 sleep,而是使用 setTimeout 并在函数获取时触发消息已调用。

类似地,如果您使用 WebWorkers 进行 WebSocket 数据传输,您将从主线程接收消息,通过 websocket 异步发送数据包,然后在响应处理程序中将消息发送回主线程。没有合理的地方可以使用同步 sleep 函数。

至于为什么 WebSocket 没有像文件系统那样的同步模式,主要区别在于文件系统不是通过网络访问的。一般来说,异步API更适合基于网络的功能,所以我想我并不认为这是一个矛盾。

IDB 是 only supported by 3 browsers, none of which have implemented the synchronous API ,所以我不认为这是同步 API 的光辉示例。事实上,我认为这就是人们定义 API 却懒得去实现它的矛盾之处。

关于javascript - 为什么 Web Workers 中有同步 FileSystem 支持,但没有同步 WebSocket 支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12611853/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com