zoukankan      html  css  js  c++  java
  • 事件循环

    基本概念

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

    执行栈:执行同步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
  • 相关阅读:
    [Luogu] P1886 滑动窗口
    [Luogu] P1195 口袋的天空
    [Luogu] P1331 海战
    [Luogu] P3952 时间复杂度
    运营活动如何防刷
    考研政治刷题小程序
    考研刷题小程序
    在线答题活动小程序
    知识竞答小程序v2.0
    知识竞答小程序
  • 原文地址:https://www.cnblogs.com/sghy/p/13529203.html
Copyright © 2011-2022 走看看