记了老是忘记那就写下来吧宏任务微任务

宏任务:script 定时器 微任务:promiss process.nexttick

new Promise(function(resolve){console.log(3);//此为同步程序resolve();//同步 是否异步 由内部函数决定console.log(4);
}).then(function(){
//。then 异步console.log(5);
});async function async1() {console.log("async1 start");//同步await  async2();//同步 是否异步 由内部函数决定console.log("async1 end");//异步开始}

  process.nextTick 永远大于 promise.then

知乎练习题

setTimeout(function () {console.log(4)
}, 0);
new Promise(function (resolve) {console.log(1);for (var i = 0; i < 10000; i++) {i == 9999 && resolve()}console.log(2)
}).then(function () {console.log(5)
});
console.log(3);// 1 3 2  5 4 错误
// 12354 ✅
// 由于整个 script 也属于一个 macrotask, 由于会先执行 macrotask 中的第一个任务,
再加上promise 构造函数因为是同步的,所以会先打印出 1和2然后继续同步执行末尾的 
console.log(3) 打印出3 此时 setTimeout 被推进到 macrotask 队列中,promise.then 回调被推进到 microtask 队列中由于在第一步中已经执行完了第一个 
macrotask , 所以接下来会顺序执行所有的 microtask, 也就是 promise.then 的回调函数
,从而打印出5microtask 队列中的任务已经执行完毕,继续执行剩下的 macrotask 队列中
的任务,也就是 setTimeout, 所以打印出 4

  

“剩下的疑问: process.nextTick也会放入microtask quque,为什么优先级比promise.then高呢? 到底是不是setTimeout有一个依赖实现的最小延迟?4ms?”

process.nextTick 永远大于 promise.then,原因其实很简单。。。在Node中,_tickCallback在每一次执行完TaskQueue中的一个任务后被调用,而这个_tickCallback中实质上干了两件事: 1. nextTickQueue中所有任务执行掉(长度最大1e4,Node版本v6.9.1) 2. 第一步执行完后执行_runMicrotasks函数,执行microtask中的部分(promise.then注册的回调) 所以很明显process.nextTick > promise.then

转载于:https://www.cnblogs.com/smzd/p/8482278.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249967.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SPRING自定义注入CONTROLLER变量

问题描述 在SpringMVC中默认可以注入Model&#xff0c;ModelAndView&#xff0c;RequestParam&#xff0c;PathVariable 等&#xff0c;那么这个是怎么实现的&#xff0c;以及怎么注入一个自定义的参数呢 HandlerMethodArgumentResolver 在SpringMVC中有一个接口HandlerMethod…

进程,线程

import os, timeif __name__ __main__:print(the calling process id:%d % os.getpid())# 创建进程pid os.fork()if pid 0:# 子进程print(the child pid is %d % os.getpid())time.sleep(3)elif pid > 0:# 父进程os.wait() # 等待子进程终止print([%d]bye-bye % os.getpi…

livebos--iframe使用

新建一个方法。建一个参数&#xff0c;iframe控件&#xff0c;虚拟列。然后使用以下信息 <% livebos languagejavascript %>var url LB_ObjURI("Lb_lbOrganization",0,[],["NoTitle"]);var v {"edit" : "url ", "view"…

单行溢出 和多行溢出

/*单行溢出*/.one_txt_cut{overflow: hidden;white-space: nowrap;text-overflow: ellipsis;}.txt_cut{overflow : hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;}转载于:https://www.cnblogs.com/smzd/p/8491583…

Spring方法注入 @Lookup注解使用

情景分析 在Spring的诸多应用场景中bean都是单例形式&#xff0c;当一个单利bean需要和一个非单利bean组合使用或者一个非单利bean和另一个非单利bean组合使用时&#xff0c;我们通常都是将依赖以属性的方式放到bean中来引用&#xff0c;然后以Autowired来标记需要注入的属性。…

Jupyter配置步骤

Jupyter是基于浏览器的可交互式开发工具&#xff0c;在数据科学界非常受欢迎&#xff0c;它功能齐全&#xff0c;使用方便&#xff0c;是一款数据分析和建模挖掘的利器。 本文简介Jupyter的配置和使用过程 一、修改添加国内镜像 通常我会先安装Anaconda&#xff0c;再安装Jupyt…

edittext 属性

1.去掉edittext的底线&#xff0c;设置&#xff0c;不管是edittext&#xff0c;还是appcompatEdittext都是这个属性 转载于:https://www.cnblogs.com/hechangshou/p/9301004.html

定义高亮颜色

/*怎么定义高亮的颜色*/-webkit-tap-highlight-color: transparent;/*透明 其实就是不显示颜色*/-webkit-tap-highlight-color: red; 转载于:https://www.cnblogs.com/smzd/p/8491587.html

springboot 配置webservice接口

导入依赖的jar <!-- webservice cxf --><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-frontend-jaxws</artifactId><version>3.1.6</version></dependency><dependency><groupId>org…

【Django】认证系统

目录 #. auth模块1. 认证 authenticate()2. 登陆 login(HttpRequest, user)3. 注销 logout(request)4. 认证判断 is_authenticated()5. 登陆校验 login_requierd()6. 创建普通用户 create_user()7. 创建超级用户 create_superuser()8. 密码校验 check_password(password)9. 修改…

学习的目的是什么?

学习的目的是为了掌握生存的常识和技能&#xff0c;以便独立地面对世界&#xff1b; 学习的目的是为了遵从生活的规范和律则&#xff0c;以便和谐地与人相处&#xff1b; 学习的目的是为了探索生命的价值和意义&#xff0c;以便有尊严地立于天地之间。 你觉得为什么要学习呢&am…

span里面插入文字

.text-box span::before{ content:attr(data-text);} 转载于:https://www.cnblogs.com/smzd/p/8491664.html

Spring Boot 动态注入的两种方式

通过Profilespring.profiles.active spring.profiles.active&#xff1a;官方解释是激活不同环境下的配置文件&#xff0c;但是实际测试发现没有对应的配置文件也是可以正常执行的。那就可以把这个key当作一个参数来使用 Profile&#xff1a;spring.profiles.active中激活某配…

kernel devel 安装与卸载

1、查看系统内核 uname -r 2、查看已安装kernel-devel uname -a ; rpm -qa kernel\* | sort 3、下载对应的rpm wget xxx/kernel-devel-2.6.32-754.el6.x86_64.rpm 或者 $ sudo yum install "kernel-devel-uname-r $(uname -r)" 4、卸载已安装的内核 yum remove ker…

弹性布局

/* 开启弹性布局的换行 */ flex-wrap: wrap;/* 变为多行了 无法使用 align-items 进行位置设置 align-content 在多行的时候 设置属性 跟 justify-content 一模一样如果只有 一行时 无法生效 *//* 调整元素 在主轴上的 排布方式flex-end 到主轴的末尾flex-start 默认值center…

详解 vue-cli 的打包配置文件代码(给大家写写注释)

一、前言 对于webpack基础不好&#xff0c;node指令不通的童鞋。估计对自己搭建Vue、react脚手架是相当头疼的&#xff0c;有种无从下手的感觉。然而&#xff0c;从头看这2块&#xff0c;耗时太长&#xff0c;而且说实话得练才行&#xff0c;不练练手看不明白。那大多数人就采取…

AutoFac自动注入时报错

错误描述&#xff1a;An error occurred during the activation of a particular registration 解决办法&#xff1a;看到了particular这个单词&#xff0c;用我蹩脚的英语&#xff0c;估计是部分类&#xff1f;结合报错的两个类存在互相引用&#xff0c;这就明白了&#xff0c…

尝试修改源码需要用到git存一下

git reflog查看本地记录 git reset --hard 02a3260 转载于:https://www.cnblogs.com/smzd/p/8492065.html

poj3713 Transferring Sylla 枚举+tarjan判割点

其实就是判断是否为三连通图 三连通图指的是去掉3个点就不连通的图&#xff0c;但是并没有直接求三连通的算法。著名的Tarjan算法可以求解连通和割点&#xff0c;再枚举删除一个点就能达到三连通的目的。 先看用例2&#xff0c;是由用例1去掉一条边而变成非三连通图的&#xff…

html标签大全

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>This is study note</title><base href"我是做外链的&#xff0c;一般在head里面" target"_blank"><style type&q…