当前位置:   article > 正文

相亲交友源码开发,关于事件循坏你该了解的一些事_nodejs相亲网站源码

nodejs相亲网站源码

先来了解一下三个重要的概念

主线程

相亲交友源码中所有的同步任务都是在主线程里执行的,异步任务可能会在macrotask或者microtask里面

  • 同步任务: 指的是在相亲交友源码主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务。
  • 异步任务: 指的是不进入相亲交友源码主线程,某个异步任务可以执行了,该任务才会进入主线程执行。

微任务(micro task)

  • promise
  • async
  • await
  • process.nextTick(node)
  • mutationObserver(html5新特性)

宏任务(macro task)

  • script(整体代码)
  • setTimeout
  • setInterval
  • setImmediate
  • I/O
  • UI render

大致流程

简单的说,事件循环(eventLoop)是单线程的JavaScript在处理异步事件时进行的一种循环过程,具体来讲,对于相亲交友源码的异步事件它会先加入到事件队列中挂起,等主线程空闲时会去执行事件队列中的事件。
主线程任务——>微任务——>宏任务 如果宏任务里还有微任就继续执行宏任务里的微任务,如果宏任务中的微任务中还有宏任务就在依次进行
主线程任务——>微任务——>宏任务——>宏任务里的微任务——>宏任务里的微任务中的宏任务——>直到任务全部完成 我的理解是在同级下,微任务要优先于宏任务执行

在相亲交友源码同一轮任务队列中,同一个微任务产生的微任务会放在这一轮微任务的后面,产生的宏任务会放在这一轮的宏任务后面
在相亲交友源码同一轮任务队列中,同一个宏任务产生的微任务会马上执行,产生的宏任务会放在这一轮的宏任务后面

它不停检查 Call Stack 中是否有任务(也叫栈帧)需要执行,如果没有,就检查 Event Queue,从中弹出一个任务,放入 Call Stack 中,如此往复循环。

在这里插入图片描述

  • 同步和异步任务分别进入不同的执行"场所",同步的进入相亲交友源码主线程,异步的进入Event Table并注册函数。

  • 当指定的事情完成时,Event Table会将这个函数移入Event Queue。

  • 相亲交友源码主线程内的任务执行完毕为空,会去Event Queue读取对应的函数,进入主线程执行。

  • 上述过程会不断重复,也就是常说的Event Loop(事件循环)

    事件循环流程函数版

堆栈和队列简要说明图

在这里插入图片描述

为什么先微后宏

微任务会在执行任何其他事件处理,或渲染,或执行任何其他宏任务之前完成。
这很重要,因为它确保了微任务之间的应用程序环境基本相同(没有鼠标坐标更改,没有新的网络数据等)。
如果我们想要异步执行(在当前代码之后)一个函数,但是要在更改被渲染或新事件被处理之前执行,那么我们可以使用 queueMicrotask 来对其进行安排(schedule)

其他概念名词

堆(heap)

保存的地址

对象被分配在相亲交友源码堆中,堆是一个用来表示一大块(通常是非结构化的)内存区域的计算机术语。

栈(stack)

后进先出 (lifo) last in first out (坐电梯

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/403431
推荐阅读
相关标签