zoukankan      html  css  js  c++  java
  • 前端进阶之js执行顺序

    setTimeout(()=>{
        console.log('set1')
    })
    
    new Promise((resolve,reject)=>{
        console.log('p1')
        resolve();
    }).then(()=>{
        console.log('then1')
    })
    console.log('1')
    



    最后的执行结果顺序是:p1,set1,then1,set1
    整个的一个执行顺序涉及到两点:

    • js的执行顺序
    • 微任务与宏任务

    对于js的执行顺序而言,按照代码的顺序去找,

    • 没有异步就 顺序执行
    • 有异步放入异步队列之中
    • new Promise的第一部分是按照同步执行的
      以上三点可知:先打印p1之后是1;在之后由于set1和then1是放入异步队列之中的,那么当顺序执行完成之后再去执行这些。但是,任务又分为微热恩恩无和宏任务:
    • 每次支持性完成后要先检查当前是否微任务队列中还有微任务还没有执行完成,如果有的话就先执行完微任务再去执行下一个宏任务
  • 相关阅读:
    CentOS 7 Docker基本特性
    linux go环境安装
    Docker部署Golang
    高可用Redis服务架构分析与搭建
    linux常用基本命令
    docker容器
    Linux 配置网络连接
    自定义泛型委托对象
    sql游标使用
    CSS 实用实例
  • 原文地址:https://www.cnblogs.com/smileyqp/p/12680799.html
Copyright © 2011-2022 走看看