在 Web Worker 仍在运行时向其发送消息

2023-11-21

假设我们有一个 Web Worker 引用一个名为“worker.js”的文件。我们使用worker来执行“worker.js”中的一个函数,该函数执行一些冗长的操作。我们调用将相应的消息发布给工作人员并在主线程中继续。然而,在工作线程完成初始工作之前,主线程会向它发送另一条消息。

我的问题:工作人员是否会继续执行我们的计时功能,并且仅在完成后处理新发布的消息,还是会中断当前操作,直到新消息完成为止?


我已经在 Google Chrome 的调试器中尝试了以下代码:

工人.js:

var cosine;
self.onmessage = function(e) {
    if (e.data.message == 0) {
        for (var i = 0; i < 10000000; i++) {
            cosine = Math.cos(Math.random());
            if (i % 1000 == 0) console.log("hello world");
        }
    } else if (e.data.message == 1) {
        console.log("xyz");
    }
};

main.js:

var worker;

function main() {
    worker = new Worker("js/worker.js");
    worker.postMessage({message: 0});
    setTimeout(xyz, 10);
}

function xyz() {
    worker.postMessage({message: 1});
}

output:

(10000 times) test.js:11 hello world
test.js:14 xyz

每次新迭代都会重新计算余弦变量,以提供问题中描述的“耗时”算法。 显然,只有在最后一个操作完成后才会收到该消息,因为我观察到在第 10000 个“hello world”输出之后立即打印了“xyz”输出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Web Worker 仍在运行时向其发送消息 的相关文章

  • 绑定 popstate 事件不起作用

    我尝试在浏览器的控制台中输入以下代码 window onpopstate function alert 1 然后单击后退按钮 没有显示任何警报 难道我做错了什么 或者是否不允许将 popstate 事件绑定到控制台的页面 使用 Chrome
  • PHP 多个 Ajax 请求:第一个请求阻止第二个请求

    我在一页上有 2 个 ajax 请求 我运行了第一个请求并单独启动了第二个请求 但第二个在第一个运行后停止工作 第一次结束后继续 第一个请求需要很长时间 大约 30 60 秒 此时我需要第二个请求来显示日志第一个请求发生的情况 我尝试使用
  • 在 ajax 请求上启用 jQuery contextMenu 项

    我正在尝试更新上下文菜单 http medialize github com jQuery contextMenu docs htmlitem 如果 ajax 请求改变了我的 div 内容 这就是我的意思 我有一个这样的 div div c
  • 在 React 组件中等待异步函数并显示 Spinner

    初学者在这里 尝试从服务器获取一些数据并在获取后将其显示在我的反应组件中 但是 我在将异步函数集成到我的反应组件中时遇到了麻烦 import React useState from react import request from gra
  • Perl 中的线程定时循环

    本质上 我希望有一个高优先级线程 它以给定的时间间隔 此处为 0 5 毫秒 运行并中断 一切 执行一个短任务 然后返回 睡眠 状态 使用 Ubuntu 11 04 和 perl v5 10 1 问题是 虽然我得到了某种结果 但我不确定是否有
  • 用更好的模式替换开关(Javascript)

    我必须升级我的应用程序以根据用户类型和角色属性显示页面 目前 我使用一个简单的 switch 语句来根据用户类型来执行此操作 例如 switch type case a return CONSTANT ONE case b return C
  • 仅从功能区打开一个对话框

    我有一个带有登录按钮的功能区 可打开登录对话框 我想将对话框的数量限制为一个 我正在使用函数 displayDialogAsync startAddress options callback https learn microsoft co
  • 为某个时刻添加持续时间 (moment.js)

    时刻版本 2 0 0 阅读文档后 http momentjs com docs manipulating add 我认为这很简单 Chrome 控制台 var timestring1 2013 05 09T00 00 00Z var tim
  • 如何使用 github 托管外部 CSS 文件?

    我将 css 上传到 github 然后转到网站上的文件并单击 raw 选项 我尝试将其添加到网页中 但 chrome 给出以下错误 资源解释为样式表 但使用 MIME 类型 text plain 进行传输 https raw github
  • 如何将焦点设置在 BootStrap 中的第一个输入字段上? [复制]

    这个问题在这里已经有答案了 可能的重复 如何将焦点设置到独立于 id 的 HTML 表单中的第一个输入元素 https stackoverflow com questions 277544 how to set the focus to t
  • 如何跨多个 React Redux 组件使用 requestAnimationFrame 实现游戏循环?

    努力思考最好的解决办法 我可以使用递归调用requestAnimationFrame有一个游戏循环 export interface Props name string points number onIncrement gt void o
  • 基于范围内变量的角度设置形式动作

    我一直在尝试设置一个搜索表单 可以在其中注入表单操作属性 在我的表格中我有
  • 从浏览器访问本地文件?

    您好 我想从浏览器访问系统的本地文件 由于涉及大量安全检查 是否可以通过某种方式实现这一目标 或使用 ActiveX 或 Java Applet 的任何其他工作环境 请帮帮我 要通过浏览器访问本地文件 您可以使用签名的 Java Apple
  • chrome 选项卡/窗口中的 window.open 行为

    我有一小段 javascript 旨在打开两个或更多选项卡 这在 FF 和 IE 中工作正常 但 chrome 会在新窗口而不是选项卡中打开第二个窗口 它不依赖于 url 因为我已经尝试过使用两个相同的 url 第一个在选项卡中打开 第二个
  • 如何禁用网页中的萤火虫?

    如何使用 Javascript 禁用 firebug 我想这样做是为了向访问者隐藏我的网页的运作方式 有什么选择可以做到这一点吗 你不能 你能做的最好的事情就是混淆你的 JavaScript 实际上刮掉了 您能做的最好的事情就是将所有安全关
  • 如何计算一行中Flexbox项目的数量?

    网格是使用 CSS flexbox 实现的 Example http jsbin com jumosicasi edit html css js output 本示例中的行数为 4 因为我出于演示目的固定了容器宽度 但是 实际上 它可以根据
  • PyQt 中的线程和信号问题

    我在 PyQt 中的线程之间进行通信时遇到一些问题 我使用信号在两个线程 发送者和监听者 之间进行通信 发送者发送消息 期望被监听者接收 但是 没有收到任何消息 谁能建议可能出了什么问题 我确信这一定很简单 但我已经环顾了几个小时但没有发现
  • YouTube 点击时禁用 HTML5

    有没有办法让我们通过javascript禁用HTML5视频的 播放 暂停 点击全屏 功能 然后在我们再次需要时将其放回去 我不知道你是否可以禁用它们 但你可以使用 css 删除它们 video webkit media controls f
  • HTML5 地理定位 - 在 iOS 上无法始终工作

    目前正在使用 HTML5 地理定位 我已经在所有网络浏览器上测试了它 它似乎工作正常 然而 当我在 iPad 上测试地理定位时 它在 iPad mini 上始终有效 但当我将其放在更大的 iPad iPad 2 上时 位置似乎并不总是有效
  • 如何强制下载图片?

    我的页面上有一个动态生成的图像 如下所示 img src 我不想告诉我的用户右键单击图像并点击保存 而是想公开一个下载链接 单击该链接将提示下载图像 如何实现这一目标 最初我在 js 中尝试这样做 var path my image att

随机推荐

  • 有人在同一个项目中使用过 Dojo 和 JQuery 吗?

    有人在同一个项目中使用过 Dojo 和 JQuery 吗 我需要一个 Dojo 面向对象的部分 仅此而已 和 JQuery 以便于演示 但我担心碰撞和名称冲突 是否可以在同一页面上使用两者 use jQuery noConflict 在编写
  • Unix 将月份名称转换为数字

    在 BASH shell 脚本或使用 gdate 中 给定像 2011 年 10 月 这样的日期 如何转换为年月数字格式 例如 输出应为 2011 10 mydate Oct 2011 date date printf 01 s mydat
  • ini 文件 - 从另一个 ini 文件引用变量

    如何从另一个 ini 文件解析变量 在下面的示例中 我想解析var a来自original configuration ini 并在 处使用它new configuration ini original configuration ini
  • 提取文件名 shell 脚本的一部分

    在 bash 中 我想提取许多文件名的一部分并将该输出保存到另一个文件中 这些文件的格式为 Coffee SOME NUMBERS I WANT freqdist bin sh for f in find name coffee freqd
  • 理解 nth-child(an + b):CSS3 中带有公式的选择器?

    The i 用于第一个图标和子元素 div 应该有一个大图标 任何其他 i 任何的孩子 div 但不是第一个 应该有一个中等大小的图标 div class row list item div class span1 i class icon
  • HTML 单选按钮允许多项选择

    在我的 HTML 表单中 我有以下一组单选按钮 具体取决于您选择的单选按钮取决于下一个表单 fieldset 据透露 这一切都有效 问题是由于某种原因 它们像复选框一样工作 而不是单选按钮 因此 您可以选择所有选项 而不仅仅是一次选择一个选
  • 如何测试 Akka actor 是在 Scala 中创建的

    我正在尝试编写一个测试来验证下面的演员是否正在创建一个 heartBeatExpireWorker 和一个 heartBeatAccepter 但我不知道该怎么做 首先 我想我可以使用 Mockhito 模拟或间谍来代替上下文 然后验证我是
  • 使用 jsch 库复制 sftp 中的文件

    import com jcraft jsch public class App public static void main String args JSch jsch new JSch Session session null try
  • RecordNotFound 带有accepts_nested_attributes_for 和belongs_to

    I get ActiveRecord RecordNotFound 无法为 ID 的订单找到 ID 3 的客户端 当尝试为现有客户提交订单时 这是通过表单或控制台输入以下内容来实现的 Order new client attributes
  • 将值从一个 Python 程序传递到另一个

    除了使用 txt 虚拟文件之类的东西之外 是否可以将值从一个程序传递到另一个程序 我有一个程序 它使用 txt 文件将起始值传递给另一个程序 每次运行程序时 我都会在启动程序之间更新文件中的值 十次 基本上是同时 这样做很好 但我想让 子
  • R将传统图和ggplot2放在一起[重复]

    这个问题在这里已经有答案了 我有两张图表 一张地图是用ggplot2像这样 w lt ggplot geom polygon data dep shp df aes x long y lat group group fill classJe
  • 更改谷歌地图 api v2 中标记的 InfoWindow 视图的边距颜色

    你好 我尝试将默认颜色 白色 更改为黑色 这是在谷歌地图 API v2 中 有人知道我该怎么做吗 PD 是信息窗口的边距 这是我的代码 我在其中更改信息窗口的内容 但需要更改边距 S GoogleMap map map setInfoWin
  • Swift:$0 在 Array.forEach 中如何工作?

    我看到大多数 swift 开发人员都开始使用 forEach 了解它是迭代数组的另一种方式 但 0 的含义是什么以及它是如何工作的 如果它是一个索引那么它应该增加 0 1 2 IBOutlet var headingLabels UILab
  • 在 Javascript 整数中放置逗号

    所以我在 Javascript 中有一个值 var val Entry val 该值的一个示例是277385 我如何在 Javascript 中将此数字转换为277 385 以及任何数字 以便它在正确的位置有逗号 function addC
  • IE 仅在按 F12 后才运行 JavaScript

    I have a strange problem in Internet Explorer with JavaScript In every browser I did the test the JavaScript is enabled
  • 如何获取分支开始的信息?

    据我所知 提交对象仅包含有关父母的信息 所以如果我遇到这样的情况 branch 1 o o master o 这相当于 branch 1 o o master o 但如果我的主人继续前进怎么办 o master o branch 1 o o
  • Android Room - 处理对象中的对象列表并查询结果

    我正在使用 Android 的 Room 数据库 并且在理解如何执行以下操作时遇到了一些大问题 当我添加一个Person到数据库中 它添加所有变量 例如List
  • mysql 时间戳转换/格式化注意:遇到格式不正确的数值

    在我的数据库中 我已将 发布 行设置为时间戳 但在尝试转换 格式化它时我收到此通知 Notice A non well formed numeric value encountered code posted date d m Y H i
  • 64位.NET性能调优

    我知道 NET is JIT在应用程序运行之前编译为您正在运行的架构 但是 JIT 编译器是否针对 64 位架构进行了优化 在编写将在计算机上运行的应用程序时 有什么需要做或考虑的吗 64bit system 即使用 Int64 会提高性能
  • 在 Web Worker 仍在运行时向其发送消息

    假设我们有一个 Web Worker 引用一个名为 worker js 的文件 我们使用worker来执行 worker js 中的一个函数 该函数执行一些冗长的操作 我们调用将相应的消息发布给工作人员并在主线程中继续 然而 在工作线程完成