websocket 接收到数据时,会触发 onmessage, 如果onmessage里面的程序还没执行完,又收到数据,会被打断重新执行吗?
websocket 接收到数据时,会触发 onmessage, 如果onmessage里面的程序还没执行完,又收到数据,会被打断重新执行吗?
不会的。
不过可能你的消息可能会被阻塞掉,具体看你的代码怎么写了。
你可以模拟一个服务端,让onmessage等待20秒再打印客户端发送的数据;然后在客户端发送两次不一样的数据,正常情况下,服务端会打印出两个不一样的消息的。
不知道你用的是哪个WebSocket库,不过我觉得基本应该是一样的。
onmessage事件是基于stream的,数据是一边获取一边消耗的,onmessage事件就相当于在消耗。在监听函数未执行完之前,数据获取可能会被阻塞(看具体实现),但同一个WebSocket的onmessage事件不会被触发。
1 回答469 阅读✓ 已解决
1 回答597 阅读
309 阅读
估计是多线程的。之前的肯定不会被打断,后面发来的可能会并行执行或等待上次的执行完毕才触发。
评论区的朋友看图:
看见onmessage就认定是js,哪来的自信?
补充一下,js没有多线程,没有并行,那么第二个消息应该是等第一个onMessage回调执行完了,才会回调第二个消息的onMessage的。
一定不是丢掉第二个或者打断第一个。