浏览器交响曲 (一)浏览器中的js执行机制

浏览器中的js执行机制

今天在网上看到讨论浏览器的工作原理,我发现学习前端这么久了,竟然没有系统的学习过浏览器,知道的都是些零零散散的东西,于是趁现在空余时间,赶紧瞅瞅。

单线程的含义

什么是线程?什么是进程?
进程包含多个线程进程是操作系统最小的执行单位
浏览器是一个多进程(multi-process),一个浏览器只有一个主进程(Browser Process)负责管理Tabs(窗口),协调Renderer Process 和其他Process
渲染进程(Renderer Process)是一个多线程的 它的主线程负责渲染页面和执行js以及事件循环 渲染进程的主线程是一个单线程(同一时间js执行线程和ui渲染线程只有一个在主线程上)
在这里插入图片描述

同步、异步

正是因为js是单线程的,很多的任务只能一个一个排队执行这对用户体验不好,所以就将任务分成了同步任务和异步任务。

简单的理解:

  1. 同步:获取元素、console.log()、alert、定义 变量…

  2. 异步: 事件、定时器、延时器 …

    在这里插入图片描述

    1. 判断任务是同步还是异步
    2. 同步任务直接在主线程执行、异步任务进入事件表并等待一个条件(时间,或者用户操作:例如 点击)。
    3. 注册回调函数 异步任务进入事件队列
    4. 当主线程空闲时(同步执行完成),事件队列中的任务才被推入主线程执行。

完了吗?事情并非如此

console.log('1');

setTimeout(function() {
   
    console.log('第一个setTimeout');
    process.nextTick(function() {
   
        console.log('3');
    })
    <
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值