如果我在 web worker 仍在使用时继续使用 postMessage() 会怎样?
What happens if I keep using postMessage() when a web worker is still in use?
我是网络工作者的新手,但我有一个问题是,考虑到以下情况:
- 我生成了一个 web worker 并在 Worker
中设置了 onmessage
处理程序
- 然后我在主线程中使用
postMessage()
来触发Worker的onmessage
- 我立即调用另一个
postMessage
,而最后一个 onmessage
任务仍在进行中
那请问工作人员是怎么处理的呢?
消息已保存在队列中。 Workers 有一个消息队列,就像主线程一样,它从事件(例如点击)、setTimeout
和 postMessage
启动任务。它是这样工作的:
这同样适用于主线程以及 Node.js 例如。这就是 javascript 的工作原理。
所以对于您的回答 - 您发送给 Worker 的所有消息都将按照您处理它们的顺序进行处理,一条接一条。
这是 jsFiddle as a test that my claim is true。您会看到虽然所有消息都是一次发送的,但它们是按顺序处理的。
我是网络工作者的新手,但我有一个问题是,考虑到以下情况:
- 我生成了一个 web worker 并在 Worker 中设置了
- 然后我在主线程中使用
postMessage()
来触发Worker的onmessage
- 我立即调用另一个
postMessage
,而最后一个onmessage
任务仍在进行中
onmessage
处理程序
那请问工作人员是怎么处理的呢?
消息已保存在队列中。 Workers 有一个消息队列,就像主线程一样,它从事件(例如点击)、setTimeout
和 postMessage
启动任务。它是这样工作的:
这同样适用于主线程以及 Node.js 例如。这就是 javascript 的工作原理。
所以对于您的回答 - 您发送给 Worker 的所有消息都将按照您处理它们的顺序进行处理,一条接一条。
这是 jsFiddle as a test that my claim is true。您会看到虽然所有消息都是一次发送的,但它们是按顺序处理的。