美文网首页
Javascript-宏队列与微队列

Javascript-宏队列与微队列

作者: 猿话 | 来源:发表于2018-07-02 22:46 被阅读0次

背景

当我们忙于公司业务开发,习惯于control+c、control+v这种机械化操作时,我们将会离我们的理想越来越远。你可能会忘记或者疏于最基本,最底层的原理。在此,我们将一起踏上回头路,去探望我们遗失的美好。

之前在网上看了很多关于setTimeout,setinterval,promise等的文章,都能起到延迟执行的效果。但具体怎么执行,顺序怎样,讲解的都很片面,最近正好也被人问道,所以总结了一下以供大家参考。写的不好请留言多多指教,谢谢。

说起setTimeout,setinterval,promise等能够实现异步执行,我们必须先了解下JS的

事件循环

Event Loop,不管是前端、还是移动端(IOS和Android)等开发,都离不开事件循环机制,他会循环监听任务,并在适当的时机取出、执行和释放任务,更新UI等操作,更新UI渲染界面比较耗时,不同的渲染引擎有自己的一套渲染时机逻辑,决定要不要马上执行更新,毕竟更新UI成本大。

任务队列

宏任务:script(全局任务), setTimeout, setInterval, setImmediate, I/O, UI rendering.

微任务:process.nextTick, Promise.then, Object.observer, MutationObserver.

闭包

说起闭包,最明显的特点有三个,

1、函数套函数。

2、内部函数可以访问外部函数的变量。

3、局部变量,垃圾回收机制无法收回。

   通过示例来查看执行顺序

输出结果

总结

    1、js中为了防止线程阻塞,阻止全局代码的执行,衍生出很多异步执行解决方案,这些方案都会按需加载到指定的队列中,当全局队列执行完毕后,开始循环从 微队列->宏队列->微队列->宏队列...这种执行顺序执行下去。

    2、当一个宏观队列执行完毕,立刻执行最近添加的微观队列。

    3、这种逻辑也可以为首页加速带来思路。

在使用中有任何问题,欢迎留言反馈给我。书写不易,希望大家可以喜欢。

相关文章

  • Javascript-宏队列与微队列

    背景 当我们忙于公司业务开发,习惯于control+c、control+v这种机械化操作时,我们将会离我们的理想越...

  • 宏队列与微队列

    1.javascript是单线程,基于事件循环,非阻塞IO的 特点:处理I/0的应用,不适合cpu运算密集的应用....

  • 宏队列与微队列

    js执行时有两个异步队列:宏队列和微队列。优先执行微队列中的任务,而且每次执行完宏队列中的任务后,都会查看微队列中...

  • 宏队列与微队列

    一、原理图 二、定义说明 JS 中用来存储待执行回调函数的队列包含 2 个不同特定的列队 宏列队:用来保存待执行的...

  • 2018-06-08 宏任务和微任务

    js先把宏任务放进宏任务队列里,再把微任务放进微任务队列里,执行的时候先执行宏任务队列里的一个任务,再把微任务队列...

  • JS 异步之宏队列 与 微队列

    # 前言 JS 中用来存储待执行回调函数的队列包含 宏队列 和 微队列 宏队列:用来保存待执行的宏任务(回调),比...

  • 微任务和宏任务

    JS是单线程的,可以把这个线程叫做主线程,主线程中包含宏任务队列和微任务队列,宏任务所在的队列就叫宏任务队列,微任...

  • 关于宏任务微任务的题

    第一道题: 解析:js任务队列有两种,宏任务队列,微任务队列。js的事件循环调度的就是宏任务队列。一个宏任务执行完...

  • JavaScript 异步编程

    同步模式与异步模式 时间循环与消息队列 异步编程的几种方式 Primise异步方案 宏任务 /微任务队列 Ge...

  • 循环的过程

    当某个宏任务执行完后,会查看是否有微任务队列。如果有,先执行微任务队列中的所有任务,如果没有,会读取宏任务队列中排...

网友评论

      本文标题:Javascript-宏队列与微队列

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