这是我参与11月更文挑战的第11天,活动详情查看:2021最后一次更文挑战
前言
前几篇文章, 我们学习记录了JavaScript
中的几个事件函数 (Event)
, 以及另外其他 各知识点小结的相关阅读: list:
接上文学到的事件
, 本文来学习浏览器中JavaScript
之 事件和事件循环
事件和事件循环
JavaScript 有一个基于事件循环的并发模型, 事件循环负责执行代码、收集和处理事件以及执行队列中的子任务。
在事件循环的上下文中, 浏览器事件处理程序的行文和其他异步通知相同. 它们在事件发生是进行调度, 但必须等待正在运行的其他脚本运行完才能运行.
事件循环
我们假设一个函数的功能是对一个数字进行平方计算, 假设这是一个繁重的长时间运行的计算, 想要它在一个单独的线程中执行, 可以通过一个单独的squareworker.js
文件, 通过前面说的一个计算函数并发回消息来响应
postMessage(ev){ return ev }
addEventListener("message", event => {
postMessage(event.value * event.value)
})
事件循环之所以称之为 事件循环, 是因为它按类似如下的方式来被实现:
while (queue.waitForMessage()) {
queue.processNextMessage()
}
queue.waitForMessage()
会同步地等待消息到达(如果当前没有任何消息等待被处理)。
"执行至完成" 每一个消息完整地执行后, 其它消息才会被执行. 这为程序的分析提供了一些优秀的特性, 包括:当一个函数执行时, 它不会被抢占, 只有在它运行完毕之后才会去运行任何其他的代码, 才能修改这个函数操作的数据。如果一个函数在线程中运行, 它可能在任何位置被终止, 然后在另一个线程中运行其他代码。
相关更文阅读
- JavaScript 学习理解-Number-这是一个函数
- JavaScript 学习理解-自动类型转换
- JavaScript 中的中缀运算符
- 你知道 JavaScript 的 typeof 是什么吗?
- 学习 JavaScript 中几个代表性事件(Event)
- 学习理解客户端 JavaScript-事件分类(一)
- 客户端 JavaScript-事件分类(二)
carry on
学习, 记录, 积累 是一个漫长的过程!
Buy Less by Know More! Calm Down! 加油!