美文网首页
事件循环机制 - EventLoop

事件循环机制 - EventLoop

作者: Max_Law | 来源:发表于2021-12-07 22:40 被阅读0次

首先 JavaScript 是单线程,为了处理异步,I/O 等待状态等问题引入了事件循环机制。

  1. 代码由上往下顺序执行。
  2. 遇到宏任务(XHR回调、事件回调(鼠标键盘事件)、setImmediate、setTimeout、setInterval、indexedDB数据库等I/O操作以及UI rendering)将任务推进宏任务队列。
  3. 遇到微任务(process.nextTick、Promise.then、Object.observer(已经被废弃)、MutationObserver(html5新特性))将任务推进微任务队列。
  4. 当主程序走完执行微任务队列再执行宏任务队列,循环往复。

例子:

async function async1() {
    console.log("async1 start")
    await async2()
    console.log("async1 end")
}

async function async2() {
    console.log("async2")
    return new Promise((resolve, reject) => {
        resolve();
        console.log("async2 Promise")
    })
}

console.log("strat")

setTimeout(function () {
    console.log("setTimeout")
}, 0)

async1();

new Promise(resolve => {
    console.log("Promise")
    resolve()
}).then(() => {
    console.log("Promise then")
})

console.log("end")

答案:

strat
async1 start
async2
async2 Promise
Promise
end
Promise then
async1 end
setTimeout

相关文章

  • 事件循环机制 - EventLoop

    首先 JavaScript 是单线程,为了处理异步,I/O 等待状态等问题引入了事件循环机制。 代码由上往下顺序执...

  • JS事件循环机制 eventloop

    如何理解JS事件的循环机制(浏览器端)答: 我们知道JS是单线程运行的(暂时撇去web worker)、是异步的、...

  • JS中EventLoop事件循环机制

    JavaScript的事件分两种,宏任务(macro-task)和微任务(micro-task) 先记住两个概念:...

  • 异步操作和事件循环机制(Event Loop)续一

    上一次文章 异步操作和事件循环机制(Event Loop)中我们提到了 EventLoop ,而事件循环机制在 N...

  • EventLoop 事件循环机制

    什么是EventLoop? 浏览器协调用户操作、渲染、网络请求,硬件控制等事件源执行顺序的机制. 外部队列(Tas...

  • 事件循环EventLoop机制

    1. 宏任务与微任务 依据我们多年编写 ajax 的经验:js 应该是按照语句先后顺序执行,在出现异步时,则发起异...

  • 面试题总结(一)

    1、什么是 EventLoop EventLoop是一种事件循环机制,可以用来解决javascript单线程运行不...

  • js中的事件循环机制(eventloop)

    前言  众所周知,JavaScript 是一门单线程语言,虽然在 html5 中提出了 Web-Worker ,但...

  • js 事件循环 eventLoop

    首先 js 是一个单线程 第二个 js 执行的顺序 程序 -----> 宏任务 ---> 微任务 宏任务 set...

  • js相关

    eventloop 主线程从任务队列中读取事件,这个过程是循环不断的,这种机制就是eventloop 宏队列也叫t...

网友评论

      本文标题: 事件循环机制 - EventLoop

      本文链接:https://www.haomeiwen.com/subject/zaaaxrtx.html