js---宏观任务和微观任务
一、什么是宏观任务和微观任务
任务可以分为同步任务和异步任务;异步任务又可以分为宏观任务和微观任务,自从es6后,js引擎也可以发布异步任务。
宏观任务:通过浏览器、node。js等宿主环境来请求
微观任务:是js引擎发起的任务
二、执行流程
首先执行的是同步代码
其次是微观任务代码
最后是宏观任务
三、代码
1.同步代码 (js 执行栈/回调栈)
2.微任务的异步代码(is引擎)
process.nextTick (node)
Promise.then() catch(),Promise本身为同步,them/catch的回调是异步
se.then() catch()
Async/Await
Object.observe 等等
3.宏任务的异步代码(宿主环境)
script (代码块)
setTimeout / setlnterval 定时器
setlmmediate 定时器宏任务了
四、应用
1、从上到下,把所有的同步任务、异步任务中的宏观任务和微观任务找出来。
2、然后根据执行循序,先进先出,所以输出结果是1,2,6,4,3,5
注:值得注意的是,在await之后都是微观任务,所以将console.log(3)放到微观任务中
是不是轻轻松松搞定宏观任务和微观任务的啦!
js---宏观任务和微观任务相关推荐
- 浅谈js宏观任务、微观任务
js运行机制分为同步异步,异步又分为宏观事件和微观事件: 同步异步: js是一门单线程语言,因此js在同一个时间里只能做一件事,单线程意味着,如果在同个时间有多个任务的话,这些任务就需要排队,前一个执 ...
- js 宏观任务和微观任务 promise的代码为什么比setTimeout先执行
这篇文章是通过学习极客时间winter大大的<重学前端>中16| promise里的代码为什么比setTimeout先执行总结而来 宏观任务[MacroTask] 和 微观任务[Micro ...
- js宏观任务和微观任务
先来看这样一道面试题: async function async1() {console.log('async1 start')await async2()console.log('async1 en ...
- 浅谈 js运行机制 、宏观任务、微观任务
**今天我们谈一下我对js 运行机制 和宏观任务.微观任务的理解** js运行机制有同步运行和异步运行 js是单线程运行模式在进入任务当中如果是同步任务 那么就直接被主线程运行 如果是异步任务 那么就 ...
- JS执行机制、同步和异步、宏观任务和微观任务
1. JS 是单线程 JavaScript 语言的一大特点就是单线程,也就是说,同一个时间只能做一件事. 这是因为 Javascript 这门脚本语言诞生的使命所致--JavaScript 是为处理页 ...
- js的循环机制、宏观任务与微观任务
javascript是单线程语言,EventLoop事件循环. 一.同步和异步: 所有的线程,都是有同步队列,和异步队列,立即执行的任务队列,这些都是属于同步任务,比如一个简单的函数:请求接口发送aj ...
- 量化因果涌现表明:宏观可以战胜微观
来源:集智俱乐部 作者:Erik P. Hoel, Larissa Albantakis, Giulio Tononi 译者:赵婷婷 审校:梁金 编辑:邓一雪 导语 复杂系统内的因果关系可以从 ...
- c++定义一个动态全局变量_静态链接与动态链接的宏观概述及微观详解
静态链接与动态链接的宏观概述及微观详解 第一部分 宏观概述 1. 静态链接 静态链接就是在程序运行前,链接器通过对象文件中包含的重定位表,完成所有重定位操作,并最终形成一个在运行时不需要再次进行依赖库 ...
- 微积分小课堂:微分(从宏观变化了解微观趋势)
文章目录 引言 I 预报知识 1.1 微积分的发明 1.2 导数 II 微分 2.1 圆柱体积的变化趋势 2.2 梯度 引言 线性代数有很强的实用价值 微积分能提高思维水平,在任何时刻算出梯度,然后沿 ...
- 对极限定义的理解_宏观区间和微观区间_20160326
对极限定义的理解_宏观区间和微观区间
最新文章
- Android Handler sendEmptyMessageDelayed 和 sendEmptyMessage 的使用
- JDBC操作MySQL Lob字段记实
- django3.2.8配置使用mysql
- 用WPF做了几个小游戏
- efcore mysql坑,.net core 2.1 使用ef DBfirst 生成 实体映射遇到的坑 (Pomelo.EntityFrameworkCore.MySql 篇)...
- zabbix (二)安装
- Visual Studio Team Architect团队的敏捷开发 (第三部分)
- php_l3arning_notes_2
- 锐捷长ping_锐捷网络 RG-NBR3000(带机量1000台)
- Quartz数据库存储
- C语言-C语言程序的结构
- CF868F 分治优化dp
- view基础知识介绍(一)
- UART(一)裸机编程
- 决策树(三)--完整总结(ID3,C4.5,CART,剪枝,替代)
- 书籍推荐——Python绝技:运用Python成为顶级黑客
- 代码随想录Day48|198.打家劫舍、213.打家劫舍II、337.打家劫舍III
- 内置函数sum与sum(list,[])
- 关于VUE中对object.object和object[object]的认识
- 慧安股份加入飞桨技术伙伴计划,共同打造智慧物联网产品和行业应用解决方案...