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
  • 相关阅读:
    Hive 2.1.1安装配置
    vi / vim 删除以及其它命令
    『MySQL』时间戳转换
    update 中实现子查询
    hive lateral view 与 explode详解
    xpath定位方法详解
    Python int与string之间的转化
    ORM、SQLAchemy
    python bottle 简介
    python wsgi 简介
  • 原文地址:https://www.cnblogs.com/sghy/p/13529203.html
Copyright © 2011-2022 走看看