Eventloop

作者: monvhh | 来源:发表于2018-11-05 17:24 被阅读0次

    https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/
    https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop

    Event Loop是一个程序结构,用于等待和发送消息和事件。
    (a programming construct that waits for and dispatches events or messages in a program.)

    简单说,就是在程序中设置两个线程:一个负责程序本身的运行,称为"主线程";另一个负责主线程与其他进程(主要是各种I/O操作)的通信,被称为"Event Loop线程"。

    image.png

    tasks 队列的第一个任务取出,开始执行。
    执行直到当前 stack 为空,于是去检查 microtasks 队列。
    依次执行 mocrotasks 队列的所有任务,直到 mocrotasks 队列为空,转 1 。

    task主要包含:setTimeout、setInterval、setImmediate、I/O、UI交互事件
    microtask主要包含:Promise、MutaionObserver

    task按顺序执行,浏览器渲染穿插其间。
    microtasks一组,按顺序完成
    1,每个回调之后执行,只要不在js执行过程中。
    2,每个task结束。

    process.nextTick 优先于Promise。

    https://jsblog.insiderattack.net/promises-next-ticks-and-immediates-nodejs-event-loop-part-3-9226cbe7a6aa

    相关文章

      网友评论

          本文标题:Eventloop

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