• 事件循环


    基本概念

    堆:存储对象
    栈:存储基础类型变量及对象的指针

    执行栈:执行同步js脚本的地方

    事件队列:异步js存放的地方

    定义:当前执行栈中的所有任务都执行完毕, 主线程处于闲置状态时,主线程会去查找事件队列是否有任务。如果有,那么主线程会从中取出排在第一位的事件,并把这个事件对应的回调放入执行栈中,然后执行其中的同步代码...,如此反复,这样就形成了一个无限的循环。这个过程被称为“事件循环(Event Loop)”

    以下事件属于宏任务:

    setInterval()
    setTimeout()


    以下事件属于微任务

    new Promise()

    new MutaionObserver()

    当当前执行栈执行完毕时会立刻先处理所有微任务队列中的事件,然后再去宏任务队列中取出一个事件。
    同一次事件循环中,微任务永远在宏任务之前执行。

    setTimeout(function () {
    console.log(1);
    });
    
    new Promise(function(resolve,reject){
    console.log(2)
    resolve(3)
    }).then(function(val){
    console.log(val);
    })

    结果为:

    2
    3
    1
  • 相关阅读:
    Remove Element
    String StringBuffer StringBuilder
    Length of Last Word
    Space Replacement
    Longest Palindromic Substring
    jQuery2.0.0版本以后不再支持ie8的原因
    npm命令
    不借助第三个变量实现两个变量交换及原理分析
    js 不同进制之间相互转换
    ECMAScript toString() 方法
  • 原文地址:https://www.cnblogs.com/sghy/p/13529203.html
Copyright © 2020-2023  润新知