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

网站开发中加入cad功能微信网站怎么做下载附件

网站开发中加入cad功能,微信网站怎么做下载附件,约么同城实时定位搜索引擎,编程学习入门软件一、事件循环是什么 首先#xff0c;JavaScript是一门单线程的语言#xff0c;意味着同一时间内只能做一件事#xff0c;但是这并不意味着单线程就是阻塞#xff0c;而实现单线程非阻塞的方法就是事件循环 在JavaScript中#xff0c;所有的任务都可以分为 同步任务#…一、事件循环是什么 首先JavaScript是一门单线程的语言意味着同一时间内只能做一件事但是这并不意味着单线程就是阻塞而实现单线程非阻塞的方法就是事件循环 在JavaScript中所有的任务都可以分为 同步任务立即执行的任务同步任务一般会直接进入到主线程中执行 异步任务异步执行的任务比如ajax网络请求setTimeout定时函数等 同步任务与异步任务的运行流程图如下 从上面我们可以看到同步任务进入主线程即主执行栈异步任务进入任务队列主线程内的任务执行完毕为空会去任务队列读取对应的任务推入主线程执行。上述过程的不断重复就事件循环 二、宏任务与微任务 如果将任务划分为同步任务和异步任务并不是那么的准确举个例子 console.log(1)setTimeout((){console.log(2) }, 0)new Promise((resolve, reject){console.log(new Promise)resolve() }).then((){console.log(then) })console.log(3)如果按照上面流程图来分析代码我们会得到下面的执行步骤 console.log(1)同步任务主线程中执行setTimeout() 异步任务放到 Event Table0 毫秒后console.log(2)回调推入 Event Queue 中new Promise 同步任务主线程直接执行.then 异步任务放到 Event Tableconsole.log(3)同步任务主线程执行 所以按照分析它的结果应该是 1  new Promise  3  2  then 但是实际结果是1new Promise 3  then  2 出现分歧的原因在于异步任务执行顺序事件队列其实是一个“先进先出”的数据结构排在前面的事件会优先被主线程读取 例子中 setTimeout回调事件是先进入队列中的按理说应该先于 .then 中的执行但是结果却偏偏相反 原因在于异步任务还可以细分为微任务与宏任务 微任务 一个需要异步执行的函数执行时机是在主函数执行结束之后、当前宏任务结束之前 常见的微任务有 Promise.then MutaionObserver Object.observe已废弃Proxy 对象替代 process.nextTickNode.js 宏任务 宏任务的时间粒度比较大执行的时间间隔是不能精确控制的对一些高实时性的需求就不太符合 常见的宏任务有 script (可以理解为外层同步代码)setTimeout/setIntervalUI rendering/UI事件postMessage、MessageChannelsetImmediate、I/ONode.js 这时候事件循环宏任务微任务的关系如图所示 按照这个流程它的执行机制是 执行一个宏任务如果遇到微任务就将它放到微任务的事件队列中当前宏任务执行完成后会查看微任务的事件队列然后将里面的所有微任务依次执行完 回到上面的题目 console.log(1) setTimeout((){console.log(2) }, 0) new Promise((resolve, reject){console.log(new Promise)resolve() }).then((){console.log(then) }) console.log(3)流程如下 // 遇到 console.log(1) 直接打印 1 // 遇到定时器属于新的宏任务留着后面执行 // 遇到 new Promise这个是直接执行的打印 new Promise // .then 属于微任务放入微任务队列后面再执行 // 遇到 console.log(3) 直接打印 3 // 好了本轮宏任务执行完毕现在去微任务列表查看是否有微任务发现 .then 的回调执行它打印 then // 当一次宏任务执行完再去执行新的宏任务这里就剩一个定时器的宏任务了执行它打印 2三、async与await async 是异步的意思await则可以理解为 async wait。所以可以理解async就是用来声明一个异步方法而 await是用来等待异步方法执行 async async函数返回一个promise对象下面两种方法是等效的 function f() {return Promise.resolve(TEST); }// asyncF is equivalent to f! async function asyncF() {return TEST; }await 正常情况下await命令后面是一个 Promise对象返回该对象的结果。如果不是 Promise对象就直接返回对应的值 async function f(){// 等同于// return 123return await 123 } f().then(v console.log(v)) // 123不管await后面跟着的是什么await都会阻塞后面的代码 async function fn1 (){console.log(1)await fn2()console.log(2) // 阻塞 }async function fn2 (){console.log(fn2) }fn1() console.log(3)上面的例子中await 会阻塞下面的代码即加入微任务队列先执行 async外面的同步代码同步代码执行完再回到 async 函数中再执行之前阻塞的代码 所以上述输出结果为1fn232 四、流程分析 通过对上面的了解我们对JavaScript对各种场景的执行顺序有了大致的了解 这里直接上代码 async function async1() {console.log(async1 start)await async2()console.log(async1 end) } async function async2() {console.log(async2) } console.log(script start) setTimeout(function () {console.log(settimeout) }) async1() new Promise(function (resolve) {console.log(promise1)resolve() }).then(function () {console.log(promise2) }) console.log(script end)分析过程 执行整段代码遇到 console.log(script start) 直接打印结果输出 script start遇到定时器了它是宏任务先放着不执行遇到 async1()执行 async1 函数先打印 async1 start下面遇到await怎么办先执行 async2打印 async2然后阻塞下面代码即加入微任务列表跳出去执行同步代码跳到 new Promise 这里直接执行打印 promise1下面遇到 .then()它是微任务放到微任务列表等待执行最后一行直接打印 script end现在同步代码执行完了开始执行微任务即 await下面的代码打印 async1 end继续执行下一个微任务即执行 then 的回调打印 promise2上一个宏任务所有事都做完了开始下一个宏任务就是定时器打印 settimeout 所以最后的结果是script start、async1 start、async2、promise1、script end、async1 end、promise2、settimeout
http://www.hkea.cn/news/14274558/

相关文章:

  • 金华网站建设团队wordpress主题切换
  • 学网站建设怎么样代码运行框wordpress
  • 做查询快递单号的网站多少钱wordpress代码 lt
  • 成都网站建设时代汇创域名年费价格表
  • 公司做网站是管理费用wordpress讨论
  • 温州外贸网站制作电子商务的网站案例
  • 网站建设及运行情况介绍wordpress ownclound
  • 网站怎么做站内美化wordpress获取登录作者
  • 南昌网站建设过程贵阳微信小程序制作开发
  • 国家工信部网站备案网站 主营业务
  • 菏泽网站开发php企业中英文网站源码
  • 怎样做网站外部样式dz网站建设视频教程
  • 做自己个人网站北京未来广告公司
  • 做网站都用什么语言如何做网站搜索功能
  • 优秀网站有哪些wordpress研究
  • 广州海外建站布吉网站建设哪家服务周到
  • 北京做网站需要多少钱莆田哪里有网站开发
  • 百度指数查询官网海外网站推广优化专员
  • 郑州中色十二冶金建设有限公司网站wordpress 添加频道
  • 钢结构网站海口网站建设品牌大全
  • 无锡优化网站价格定制一款app
  • 电脑网站视频怎么下载网页版传奇世界羽翼升级
  • 织梦网站模板好用心 做网站送女友
  • 毕设网站建设孝感市门户网站
  • 徐州建设工程审图中心网站创建网站建设
  • 网站建设的常见技术有哪些合肥公司网站建设
  • 学习网页设计的网站咸阳网站建设多少钱
  • 上海网站建设的英文不良网站举报中心官网
  • 南宁网站设计方法沈阳 网站开发
  • 淘宝做的网站会不会过期财务网站模板