前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前端同步、异步、多线程

前端同步、异步、多线程

原创
作者头像
星辰大海c
发布2023-11-30 14:10:38
1330
发布2023-11-30 14:10:38
举报
文章被收录于专栏:前端学习教程前端学习教程

浏览器是多线程的,可以同时处理很多任务

GUI渲染线程: 渲染HTML/CSS代码的,最后在页面中绘制出图形 【GPU显卡】

JS引擎线程: 渲染和解析JS的

事件触发线程: 监听事件是否触发的

定时器触发线程: 监听定时器是否到达时间的

异步HTTP请求线程: 用来从服务器获取资源文件或者数据的(link/script/img/ajax...)

WebWorker

...

JS中的同步异步编程

简单来说:

同步 sync:事情必须一件一件的去做,上一件事情没有处理完,下一件事情是无法处理的

异步 async:同时处理多件事情或者是上一件事情哪怕没有处理完,下一件事情也可以继续处理

进程:一个程序(或者浏览器打开一个页面)是开辟一个进程

线程:线程是进程中具体办事的,想同时办多件事,就需要开辟多个线程(一个进程中包含多个线程)

JS是单线程的:因为浏览器只会分配一个线程(JS引擎线程)去渲染和解析JS,所以在JS中大部分代码都是同步的

循环是同步的

避免死循环:死循环会占用JS引擎线程,导致这个线程无法再去处理其他程序了。

JS中有部分异步编程代码

异步微任务

  • requestAnimationFrame (有争议)
  • Promise.then/catch/finally
  • async/await
  • queueMicrotask
  • IntersectionObserver
  • MutationObserver
  • process.nextTick (Node) ... 异步宏任务
  • 定时器 setTimeout/setInterval
  • 事件绑定/队列
  • XMLHttpRequest(ajax)/Fetch
  • MessageChannel
  • setImmediate (Node) ...

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 浏览器是多线程的,可以同时处理很多任务
  • JS中的同步异步编程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档