美文网首页
EventLoop 的简单理解

EventLoop 的简单理解

作者: 鲤小鱼爱吃肉 | 来源:发表于2020-08-24 17:16 被阅读0次

EventLoop是什么

一个循环 每次循环叫tick 每次循环的代码叫task

  • V8引擎单线程无法同时干两件事
  • 文件读取、网络IO缓慢且具有不确定性
  • 要通过异步回调方式处理又称为异步IO
  • 先同步再异步 异步放入队列等同步完成后再执行 每次循环叫一个tick(process.nextTick())

异步任务的区分

microtasks(微任务):

唯一,整个事件循环中仅存在一个;执行为同步,同一个事件循环中的microtasks会按队列顺序串行执行完毕

  • process.nextTick
  • promise
  • Object.observe
  • MutationObserver

macrotask(宏任务):

  • setTimeout
  • serInterval
  • setImmediate
  • I/O
  • UI渲染

先执行微任务 再执行宏任务

如果遇到async的代码 await后面的程序就挂起 类似于微任务 等到后面的同步任务执行完了再执行

最后上一个小栗子🌰

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

async function fun(){
  console.log("fun start")
  const aa = await 1 // 到这里挂起,后面先不执行
  console.log("fun end")
}
fun()

// setTimeout 放入event table中 1秒后将回调函数放入宏任务的event queue中
setTimeout(() => {
  console.log('setTimeout ...')
}, 0)

process.nextTick(() => {
  console.log('nextTick ...')
})

console.log('console ...')


// output
resolve
fun start
console ...
nextTick ...
promise then ...
fun end
setTimeout ...

相关文章

  • EventLoop 的简单理解

    EventLoop是什么 一个循环 每次循环叫tick 每次循环的代码叫task V8引擎单线程无法同时干两件事 ...

  • 简单易懂的eventloop js

    我总是看过的东西也记不住,我意识到要脑子带着问题思考。我不再相信单一一篇文章对于一个技术难点的解释,因为人的认识总...

  • Netty学习--EventLoop和线程模型

    EventLoop 接口 EventLoop 的类层次结构在这个模型中,一个EventLoop 将由一个永远都不会...

  • js 中 eventloop个人理解

    由于js 是单线程,也就是说,同一个时间只能做一件事。防止主线程不被阻塞,所以就会涉及到各各流程事件的执行规则的问...

  • netty组件与设计

    1. Channel、EventLoop和ChannelFuture Channel、EventLoop 和 Ch...

  • Netty系列-核心组件

    待完善 Channel、EventLoop和ChannelFuture Channel、EventLoop和Cha...

  • JavaScript 运行机制 & EventLoop

    JavaScript 运行机制 & EventLoop 看阮老师博客和自己的理解,记录的学习笔记,js的单线程和 ...

  • javascript事件循环

    EventLoop 以下内容仅限于自己理解,可能并不全面或者有错误 参考文档:https://www.cnblog...

  • 2020-09-12复习

    一、eventLoop setTimeout,ajax等异步和dom事件都是使用回调,基于eventLoop ...

  • 理解js中的eventloop和task

    首先需要明确的一点儿是ECMAScript中没有event loop,event loop是在HTML Stand...

网友评论

      本文标题:EventLoop 的简单理解

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