Blog
首页
文档
收藏
关于
  • 在线转换时间戳 (opens new window)
  • 在线压缩图片 (opens new window)
  • Float-Double转二进制 (opens new window)
  • 文件转Hex字符串 (opens new window)

HiuZing

🍑
首页
文档
收藏
关于
  • 在线转换时间戳 (opens new window)
  • 在线压缩图片 (opens new window)
  • Float-Double转二进制 (opens new window)
  • 文件转Hex字符串 (opens new window)
  • 前端面试题

    • Vue

    • 计算机网络

    • CSS

    • JavaScript

      • JavaScript-闭包
      • JavaScript-原型链
      • JavaScript-new操作符具体做了什么?
      • JavaScript-浅拷贝和深拷贝
      • JavaScript-微服务和宏服务
        • JavaScript-Promise
        • JavaScript-find和filter区别
        • JavaScript-some和every区别
        • JavaScript-垃圾回收机制
        • 常见面试题
      • 小程序

      • 面试记录

    • JavaScript

    • Vue2

    • port

    • CSS

    • Node.js

    • JavaScript优化

    • uniapp

    • Mini Program

    • TypeScript

    • 面向对象编程

    • UI组件

    • Plugin

    • Vue3

    • 性能优化

    • Axios

    • 状态管理

    • React

    • Mock

    • Icon

    • Template

    • 构建工具

    • 项目规范配置

    • Taro

    • SVG

    • React Native

    • 前端
    • 前端面试题
    • JavaScript
    HiuZing
    2022-04-06
    目录

    JavaScript-微服务和宏服务

    # JS是单线程的语言

    • 单线程:同一时间只能做一件事(作为浏览器脚本语言,JS的主要用途是与用户互动,以及操作DOM,因此决定了它只能是单线程)
    • 单线程怎么执行异步代码?所有任务需要排队,前一个任务结束,才会执行后一个任务

    # JS代码执行流程

    同步执行完 ---> 事件循环

    执行完同步,才会执行事件循环的内容

    进入事件循环:请求、定时器、事件...

    for(var i = 0;i < 3;i++){
        setTimeout(function(){
            console.log(i)//3 3 3
        },1000*i)
    }
    console.log(222)
    //3
    //3
    //3
    //222
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    # 事件循环:【微任务、宏任务】

    image-20220406233624790

    微任务:promise.then

    宏任务:setTimeout

    要执行宏任务的前提是清空了所有的微任务

    流程:同步 --> 事件循环【微任务和宏任务】 --> 微任务 --> 宏任务 --> 微任务

    setTimeout(function(){
        console.log('1')
    })
    
    new Promise((resolve) => {
        console.log('1 Promise 1')//同步
        resolve()
    }).then(() => {
        console.log('微任务1')
    }).then(() => {
        console.log('微任务2')
    })
    
    console.log(2)//同步
    
    //1 Promise 1
    //2
    //微任务1
    //微任务2
    //1
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    上次更新: 2024/08/14, 04:14:33
    JavaScript-浅拷贝和深拷贝
    JavaScript-Promise

    ← JavaScript-浅拷贝和深拷贝 JavaScript-Promise→

    最近更新
    01
    React Native 使用SVG
    08-13
    02
    Docker基础命令
    08-04
    03
    算数逻辑单元
    07-30
    更多文章>
    Theme by Vdoing | Copyright © 2021-2024 WeiXiaojing | 友情链接
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式