最近工作需要学习了解webworker-threads以应对Javascript多线程处理CPU密集型的可能性;参考文档JavaScript多线程之二 Node.js中的Web Worker;

以下是自己的一次尝试并引发的对于Javascript事件循环机制的一点理解

        var Worker = require('webworker-threads').Worker; var worker = new Worker(function() { console.log(33333) postMessage('hello, I\'m send before message'); this.onmessage = function(event) { console.log(22222); postMessage('Hello, I\'m listening'); console.log(event.data); } }) worker.onmessage = function(event) { console.log(11111) console.log(event.data); } console.log(4444); worker.postMessage('hello'); 

输出结果为:

4444
33333
22222
hello
11111
hello, I'm send before message
11111
Hello, I'm listening 

那么思考一下这个结果是如何产生的?

首先,确定Javascript是单线程事件循环机制,整体执行顺序如下:

  1. 第一次主线程运行: 输出 4444; 向we bworker发送信息’hello’;
  2. 事件循环第一次: 主线程发送的hello触发子线程: 输出 333333 -> 发送 ‘hello, I\’m send before message’ -> 输出 22222 -> 发送 ‘Hello, I\’m listening’ -> 输出hello;
  3. 事件循环第二次: 输出11111 -> 输出: ‘hello, I\’m send before message’;
  4. 事件循环第三次: 输出11111; 输出: ‘Hello, I\’m listening’

总结: 当前发送的事件触发信号会在下一次事件循环时触发.

转载于:https://www.cnblogs.com/zhaowinter/p/7941336.html

对事件循环的一点理解相关推荐

  1. 对JavaScript事件循环机制的理解

    前言: 这次主要整理一下自己对 Js事件循环机制,同步,异步任务,宏任务,微任务的理解,大概率暂时还有些偏差或者错误.如果有,十分欢迎各位纠正我的错误! 一.事件循环和任务队列产生的原因: 首先,JS ...

  2. Qt事件循环的一些理解

    1.事件循环一般用exec()函数开启.QApplicaion::exec().QMessageBox::exec()都是事件循环.其中前者又被称为主事件循环. 事件循环首先是一个无限"循环 ...

  3. boost log 能不能循环覆盖_前端基础进阶(十四):深入核心,详解事件循环机制...

    Event Loop JavaScript的学习零散而庞杂,很多时候我们学到了一些东西,但是却没办法感受到进步!甚至过了不久,就把学到的东西给忘了.为了解决自己的这个困扰,在学习的过程中,我一直在试图 ...

  4. 创建一个storageevent事件_事件循环:微任务和宏任务

    浏览器中 JavaScript 的执行流程和 Node.js 中的流程都是基于 事件循环 的. 理解事件循环的工作方式对于代码优化很重要,有时对于正确的架构也很重要. 在本章中,我们首先介绍有关事物工 ...

  5. nodejs的事件循环1

    JavaScript的学习零散而庞杂,因此很多时候我们学到了一些东西,但是却没办法感受到自己的进步,甚至过了不久,就把学到的东西给忘了.为了解决自己的这个困扰,在学习的过程中,我一直试图在寻找一条核心 ...

  6. 210322阶段三QT事件循环及opencv图像处理

    目录 一.学习的知识点 1.QT事件循环机制 1.1QT是事件驱动的.QT将系统产生的信号(软件中断)转换成QT事件,并且将事件封装成类,所有的事件类都是QEvent派生的,事件的产生和处理就是QT程 ...

  7. 为什么JS是单线程?JS中的Event Loop(事件循环)?JS如何实现异步?setimeout?

    https://segmentfault.com/a/1190000012806637 https://www.jianshu.com/p/93d756db8c81 首先,请牢记2点: (1) JS是 ...

  8. JS事件循环 Event Loop

    前言 刚学前端的时候一直听别人说 JS 是单线程.单线程.单线程的,其实完整的应该是在浏览器环境下 JS 执行引擎是单线程的. 那么什么是线程?为什么JS是单线程的? 1. 进程和线程 进程和线程的主 ...

  9. 八七、Node.js事件循环与多进程

    nodejs事件循环与多进程 why 事件循环对于深入理解nodejs异步至关重要 fs, net,http,events 事件循环是企业面试中的最高频考题之一 能驾驭nodejs多进程是一名资深前端 ...

最新文章

  1. 机器学习笔记:概率图模型
  2. mysql 建表_别再胡乱建表了,看看阿里P8总结的mysql建表规约吧
  3. Python_51job爬虫
  4. 智能云如何加速产业智能化?百度CTO王海峰2020全球智博会擘画蓝图
  5. esxi vsphere的端口_硬干货!一张图弄清楚在ESXi下如何进行网络抓包
  6. 计算机网络asp视频教程,ASP.net动态网页制作视频教程
  7. 小猫钓鱼游戏(c++实现)
  8. CSDN信息无障碍知识库:为障碍者撑起一片蓝天
  9. 如何用python实现爬虫自动爬取百度图片原图
  10. 前进路上,我们都曾经迷失
  11. 微型计算机装机顺序,小伙子,听说你要装机?这款机箱够你玩好多年
  12. 宇宙现场面试题目实录
  13. 基于笔画序列的中文字向量模型设计与研究
  14. git revert 之后 找回原来的代码
  15. Windows 10配置网络代理服务器
  16. 2015异常问题解决方案经验总结(一)
  17. 【安全牛学习笔记】w3af
  18. 深秋---Java Map
  19. LVGL8.2 之 模拟器使用外部中文字体,两种方式
  20. 【JavaScript】开工竣工工期计算

热门文章

  1. 【软件工程】软件工程中应用的几种图辨析:系统流程图、数据流图、数据字典、实体联系图、状态转换图、层次方框图、Warnier图、IPO图、层次图、HIPO图、结构图、程序流程图、盒图、PAD图、判定表、
  2. [Node.js月刊]2018年第1期
  3. NFS exports命令
  4. Flash 插件又被曝出新漏洞,让攻击者可以控制 Mac
  5. 数据结构 传统链表实现与Linux内核链表
  6. 关于 Injection of autowired dependencies failed 错误的解决方法
  7. OSChina 周二乱弹 ——有时醒来发现身边是不同的姑娘
  8. 004、SVN更新改密码
  9. 菜鸟请教高手web开发内存问题?
  10. 简单电子相册视频制作的步骤和要点