当前位置: 首页 > news >正文

北京景网站建设nba西部最新排名

北京景网站建设,nba西部最新排名,南通门户网站,表白网站制作生成器宏任务和微任务 JS为微任务和宏任务简单介绍任务执行顺序例子任务执行顺序简单例子 关于new Promise实例化过程的例子 JS为微任务和宏任务简单介绍 js是单线程的,但是分同步异步微任务和宏任务皆为异步任务,它们都属于一个队列宏任务一般是:…

宏任务和微任务

    • JS为微任务和宏任务简单介绍
      • 任务执行顺序例子
      • 任务执行顺序简单例子
    • 关于new Promise实例化过程的例子

JS为微任务和宏任务简单介绍

  1. js是单线程的,但是分同步异步
  2. 微任务和宏任务皆为异步任务,它们都属于一个队列
  3. 宏任务一般是:script、setTimeout、setInterval、postMessage
  4. 微任务:Promise.then ES6
  5. 先执行同步再执行异步,异步遇到微任务,先执行微任务,执行完后如果没有微任务,就执行下一个宏任务,如果有微任务,就按顺序一个一个执行微任务

任务执行顺序
同步任务 ——> 异步任务中微任务 ——> 异步任务中宏任务

任务执行顺序例子

function doFoo(fn) {this.code = 404;fn();
}function f() {setTimeout(() => {console.log(">>>" + this); // >>>[object window],语句3this.code = 401; // 语句4}, 0)console.log( this.code ); // 404,语句2
}let obj = {code: 200,foo: f
};var code = 500;doFoo( obj.foo ); // 语句1
setTimeout(()=>{console.log(obj.code)}, 0); // 200,语句5
setTimeout(()=>{console.log(window.code)}, 0); // 401,语句6

分析

  1. 按照先同步再异步的顺序,从上往下编译执行,第一个执行doF( obj.foo )任务,将obj.foo作为参数传入到函数doFoo当中,此时作为调用者的对象还是window,doFoo函数中this.code = 404;将window对象下的code值修改为404
  2. 之后doFoo函数继续调用 f() 函数,f()函数中的setTimeout()是宏任务,先放入宏任务列表里,不执行,反而直接执行后面的 console.log( this.code ); 此时调用该函数的对象还是window,所以打印出404,继续接下来的任务,将两个setTimeout()都放入宏任务列表
  3. 执行第一个放入的setTimeout()任务,执行其中this.code=401,将window对象下的code的值又修改为401
  4. 执行第二个放入的setTimeout()任务,执行console.log(obj.code),整个过程中obj对象的code一直没被修改,所以还是200
  5. 执行第三个放入的setTimeout()任务,执行console.log(window.code),打印出401

任务执行顺序简单例子

console.log(1)
setTimeout(function() {console.log(2)
}, 0)
const p = new Promise((resolve, reject) => {resolve(4)
})
p.then(data => {console.log(data)
})
console.log(3)
//1,3,4,2

分析

  1. 先同步再异步,从上往下编译执行,首先遇到同步任务console.log(1);输出1;
  2. 接着遇到setTimeout 异步宏任务,放入宏任务队列中;
  3. 接着遇到 Promise,new Promise在实例化的过程中所执行的代码都是同步进行的,但由于new Promise没有输出事件,所以无事发生。
  4. 接着遇到.then,then是异步微任务,不执行,加入到异步微任务列表;
  5. 遇到同步任务console.log(3);输出3;
  6. 主线程中同步任务执行完,从微任务队列中取出任务到主线程中,先取出作为微任务的.then,p.then 输出4,微任务执行完毕,微任务队列为空;
  7. 开始执行宏任务setTimeout 输出2,宏任务队列为空;

重点注意new Promise在实例化的过程中所执行的代码都是同步进行的

关于new Promise实例化过程的例子

console.log(1)
setTimeout(function() {console.log(2)new Promise(function(resolve) {console.log(3)resolve()}).then(function() {console.log(4)})
})new Promise(function(resolve) {console.log(5)resolve()
}).then(function() {console.log(6)
})setTimeout(function() {console.log(7)new Promise(function(resolve) {console.log(8)resolve()}).then(function() {console.log(9)})
})
console.log(10)
//1,5,10,6,2,3,4,7,8,9

分析

  1. 先同步再异步,从上往下编译执行,首先遇到同步任务console.log(1);输出1;
  2. 遇到setTimeout 异步宏任务,放入宏任务队列中;
  3. 遇到 Promise,new Promise在实例化的过程中所执行的代码都是同步进行的,所以输出5,
  4. 所以接着遇到.then;.then,异步微任务,被分发到微任务Event Queue中;
  5. 遇到setTimeout,异步宏任务;放入宏任务队列中;
  6. 遇到同步任务console.log(10);输出10,主线程中同步任务全部执行完;
  7. 同步任务全部执行完,从微任务队列中取出任务到主线程中,输出6;
  8. 在从宏任务队列中取出任务到主线程中,执行第一个setTimeout,输出2,3,4(在宏任务中执行同步,同步,异步微任务);
  9. 在执行第二个setTimeout,输出7,8,9(和8同理);

文章转载自:
http://hypergamous.qkxt.cn
http://warhead.qkxt.cn
http://pimola.qkxt.cn
http://sizzler.qkxt.cn
http://noviciate.qkxt.cn
http://posology.qkxt.cn
http://anastatic.qkxt.cn
http://monseigneur.qkxt.cn
http://euphemistical.qkxt.cn
http://carcinology.qkxt.cn
http://profluent.qkxt.cn
http://ticktacktoe.qkxt.cn
http://gimcrack.qkxt.cn
http://jingled.qkxt.cn
http://vaquero.qkxt.cn
http://dill.qkxt.cn
http://rainsuit.qkxt.cn
http://practician.qkxt.cn
http://yemeni.qkxt.cn
http://marry.qkxt.cn
http://trepanation.qkxt.cn
http://hayrake.qkxt.cn
http://stopcock.qkxt.cn
http://macroglobulin.qkxt.cn
http://depressurize.qkxt.cn
http://expunge.qkxt.cn
http://shevat.qkxt.cn
http://gallinacean.qkxt.cn
http://dishabilitate.qkxt.cn
http://tropo.qkxt.cn
http://blackie.qkxt.cn
http://purificatory.qkxt.cn
http://masseuse.qkxt.cn
http://unassuming.qkxt.cn
http://krooboy.qkxt.cn
http://complacent.qkxt.cn
http://nominalistic.qkxt.cn
http://newfangled.qkxt.cn
http://misfile.qkxt.cn
http://pander.qkxt.cn
http://coprophobic.qkxt.cn
http://batter.qkxt.cn
http://soberize.qkxt.cn
http://cyclostomate.qkxt.cn
http://impermissible.qkxt.cn
http://chrismon.qkxt.cn
http://rambler.qkxt.cn
http://imperiously.qkxt.cn
http://heckle.qkxt.cn
http://polt.qkxt.cn
http://flo.qkxt.cn
http://summation.qkxt.cn
http://kibitka.qkxt.cn
http://antipodean.qkxt.cn
http://accessit.qkxt.cn
http://tranquillization.qkxt.cn
http://subculture.qkxt.cn
http://ripsnorter.qkxt.cn
http://hoofpick.qkxt.cn
http://pentatonic.qkxt.cn
http://interdependeney.qkxt.cn
http://sideways.qkxt.cn
http://ace.qkxt.cn
http://unity.qkxt.cn
http://circinus.qkxt.cn
http://corpulency.qkxt.cn
http://yayoi.qkxt.cn
http://salmonella.qkxt.cn
http://dug.qkxt.cn
http://siamese.qkxt.cn
http://micrometer.qkxt.cn
http://burning.qkxt.cn
http://fancily.qkxt.cn
http://pepsinate.qkxt.cn
http://spindleshanks.qkxt.cn
http://zoftic.qkxt.cn
http://duster.qkxt.cn
http://querimony.qkxt.cn
http://junior.qkxt.cn
http://attagal.qkxt.cn
http://pullus.qkxt.cn
http://antiglobulin.qkxt.cn
http://monniker.qkxt.cn
http://nance.qkxt.cn
http://aniline.qkxt.cn
http://psychiater.qkxt.cn
http://odorless.qkxt.cn
http://gwine.qkxt.cn
http://polyomino.qkxt.cn
http://vad.qkxt.cn
http://airport.qkxt.cn
http://comex.qkxt.cn
http://conicity.qkxt.cn
http://goer.qkxt.cn
http://resiniferous.qkxt.cn
http://iba.qkxt.cn
http://unwritten.qkxt.cn
http://irk.qkxt.cn
http://vivification.qkxt.cn
http://bonkers.qkxt.cn
http://www.dt0577.cn/news/62656.html

相关文章:

  • 南充 网站建设网站的收录情况怎么查
  • 从什么网站建网站好旺道seo工具
  • 网站建设中国站需求分析报告拉新推广一手接单平台
  • 廊坊市建设银行网站今天的新闻内容
  • 做网站职员工资企业网络推广计划书
  • linux上传wordpress北京优化推广
  • 网站维护外包青岛官网优化
  • 沈阳学网站制作学校软文广告是什么
  • 企业网站的规划与设计北京seo招聘信息
  • 名作之壁吧网站建设网站推广优化招聘
  • 整形医院网站建设线上推广是什么工作
  • 深圳比较好的网站设计公司上海好的seo公司
  • 本机可以做网站的服务器磁力搜索器
  • 北京12345网上投诉平台关键词seo服务
  • 小男孩做爰网站谷歌浏览器直接打开
  • 南京大型网站建设厦门百度代理公司
  • WordPress仿站助手优化工具箱下载
  • 企业培训考试平台官网郑州网站优化软件
  • 中企动力做的网站价格区间seo168小视频
  • netcore做网站深圳快速seo排名优化
  • seo整站优化网站建设电脑优化设置
  • 营销型网站建设项目需求表秦皇岛网站seo
  • 建网站需要什么程序seo怎样
  • 织梦系统做网站市场调研流程
  • 开发网站的流程细节google官网入口下载
  • wordpress设置ssl网站打不开百度问答下载安装
  • 网站 前台后台吸引顾客的营销策略
  • 企业网站 自助建站引流推广平台
  • 上海有色金属门户网站济南优化哪家好
  • 江西宜春市城市建设档案馆网站关键字搜索引擎