js中的任务
未读
title: 01-单线程和异步publish: true
单线程JavaScript 语言和执行环境是单线程。即同一时间,只能处理一个任务。
具体来说,所谓单线程,是指 JS 引擎中负责解释和执行 JavaScript 代码的线程只有一个,也就是一次只能完成一项任务,这个任务执行完后才能执行下一个。所有的任务都需要排队。
JS 为何要被设计为单线程呢?原因如下:
首先是历史原因,在最初设计 JS 这门语言时,多进程、多线程的架构并不流行,硬件支持并不好。
其次是因为多线程的复杂性,多线程操作需要加锁,编码的复杂性会增高。
而且,如果多个线程同时操作同一个 DOM,在多线程不加锁的情况下,会产生冲突,最终会导致 DOM 渲染的结果不符预期。
所以,为了避免这些复杂问题的出现,JS 被设计成了单线程语言。
同步任务和异步任务定义如果当前正在执行的任务执行完成前,它就会阻塞其他正在排队的任务。为了解决这个问题,JS 在设计之初,将任务分成了两类:同步任务、异步任务。
同步任务:在主线程上排队执行的任务。只有前一个任务执行完毕,才能执行下一个任务。
异步任务:不进入主线程、而是进 ...
1.Markdown 语法自带格式参考:Markdown 语法图文全面详解(10 分钟学会)
注意:此页面偶尔会存在 CSS 冲突问题!
1.1 代码块示例源码渲染演示12345678910111213\```shell# VSCode终端hexo clean; hexo shexo clean; hexo g; hexo dgit add .; git commit -m "npm publish"; npm version patch;git push# Cmder终端hexo clean && hexo shexo clean && hexo g && hexo dgit add . && git commit -m "npm publish" && npm version patchgit push\```1234567891011# VSCode终端hexo clean; hexo shexo clean; hexo g; hexo dgit add ...