gpt4 book ai didi

web-worker - 通过worker.postMessage()发送的消息是否排队?

转载 作者:行者123 更新时间:2023-12-04 11:35:49 25 4
gpt4 key购买 nike

创建工作人员之后,我可以通过postMessage向其发送消息。例如:

var worker = new Worker('helper.js');
worker.postMessage({...});

在helper.js中,工作人员需要使用 onmessage = function (event) { ... };添加监听器

我的问题是,如果在工作程序脚本仍在加载时将一个或多个消息发送给工作程序,是否可以保证消息最终被排队并传递,还是有可能丢失消息?

最佳答案

http://www.w3.org/TR/2015/WD-workers-20150924/#communicating-with-a-dedicated-worker的规范说

The implicit MessagePort used by dedicated workers has its port message queue implicitly enabled when it is created




  • https://developer.mozilla.org/en/docs/Web/API/Worker/postMessage没有提到在发送消息之前必须等待工作程序加载
  • 在创建不在缓存中的工作程序后立即测试发布消息http://plnkr.co/edit/jM1qy9lDEFKYhR0TDsKa?p=preview
    var worker = new Worker('worker.js?' + (new Date()).getTime());
    worker.postMessage('');
    worker.postMessage('');

    worker 只是输出到控制台
    self.onmessage = function() {
    console.log('received');
    }

    在测试时,始终为我显示2条控制台消息。但是,这不能保证它始终会以这种方式工作,但是鉴于我正在尝试使其丢失消息和失败,这是合理的证据。
  • 关于web-worker - 通过worker.postMessage()发送的消息是否排队?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34409254/

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