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

wordpress 设置站点地址先域名 还是先做网站

wordpress 设置站点地址,先域名 还是先做网站,四库一平台查询入口,外贸公司的优化建议Node.js 中的事件循环是基于单线程的异步非阻塞模型。它是 Node.js 的核心机制#xff0c;用于处理非阻塞的 I/O 操作和异步事件。 1. Node.js 事件循环介绍 Node.js 的事件循环是一个 Event Loop#xff0c;通过异步回调函数的方式实现非阻塞的处理。事件循环会在主线程上…Node.js 中的事件循环是基于单线程的异步非阻塞模型。它是 Node.js 的核心机制用于处理非阻塞的 I/O 操作和异步事件。 1. Node.js 事件循环介绍 Node.js 的事件循环是一个 Event Loop通过异步回调函数的方式实现非阻塞的处理。事件循环会在主线程上不断地执行监听和处理事件执行相应的回调函数。 Node.JS的事件循环比浏览器端复杂很多。Node.js的运行机制如下 V8引擎解析JavaScript脚本。解析后的代码调用Node API 。libuv 库C负责Node API的执行。它将不同的任务分配给不同的线程形成一个事件循环以异步的方式将任务的执行结果返回给V8引擎。V8引擎再将结果返回给用户。 2. 事件循环的六个阶段 libuv 引擎中的事件循环分为六个阶段每个阶段都有对应的回调队列回调函数的集合和触发器依次执行以下步骤 timers 阶段处理定时器和 setTimeout/setInterval 设置的回调函数。I/O callbacks 阶段处理上一轮循环中少量未执行的与 I/O 相关的回调函数例如网络请求的响应、文件读写等。idle, prepare 阶段内部使用。poll 阶段检索新的 I/O 事件执行与 I/O 相关的回调函数。check 阶段执行 setImmediate 设置的回调函数。close callbacks 阶段执行一些关闭的回调函数例如 socket.on(close, ...)。 外部输入数据一轮询阶段(poll)-检查阶段(check)-关闭事件回调阶段(close callback-定时器 检测阶段timer-I/O事件回调阶段(I/O callbacks-闲置阶段idle、prepare-轮询阶段按照该顺序反复运行) timers timers阶段会执行setTimeout和setInterval回调并且是由poll阶段控制的。同样在Node.js中定时器指定的时间也不是准确时间只能是尽快执行。 poll poll 是一个至关重要的阶段这一阶段中系统会做两件事情 回到timer阶段执行回调执行 I / O 回调 并且在进入该阶段时如果没有设定了timer的话会发生以下两件事情如果 poll 队列不为空会遍历 poll 回调队列并同步执行直到队列为空或者达到系统限制如果 poll 队列为空时会有两件事发生 如果有setlmmediate回调需要执行poll 阶段会停止并且进入到check阶段执行回调如果没有setlmmediate回调需要执行会等待其他异步任务回调被加入到队列中并立即执行回调这里同样会有个超时时间防止一直等待下去 当然设定了timer的话且 poll 队列为空则会判断是否有timer超时如果有的话会回到timer阶段执行回调。 假设 poll 被堵塞那么即使 timer 已经到时间了也只能等着这也是为什么上面说定时器指定的时间并不是准确的时间。 const fs require(fs) const start Date.now() setTimeout((){console.log(setTimeout, Date.now() - start) // 503ms }, 200) fs.readFile(./index.js, (){const start Date.now()console.log(文件读取结束)// 强行拖时间while(Date.now() - start 500) {} }) //timer队列 setTimeout 异步需要等待 poll 全部执行完之后再执行 //poll队列 readFilecheck setimmediate()的回调被加入check队列中从事件循环的阶段图可以知道check阶段的执行顺序在poll 阶段之后。 3. 一些注意点 setTimeout 和 setImmediate 区别setImmediate 在 poll阶段完成时执行即check阶段setTimeout 在 poll 阶段为空闲时且设定时间到达后执行但在 timer 阶段执行 setTimeout(function() {console.log(timeout); }, 0) setImmediate(function() {console.log(immediate); })他们执行的先后顺序是未知的进入事件循环的准备也是需要花费成本的如果准备阶段花费了大于 1ms 的时间那么在 timer 阶段就会直接执行 setTimeout 回调否则就先执行 setImmediate 回调。 但当二者在异步 I/O callback内部调用时总是先执行setlmmediate 再执行setTimeout。例如 const fs require(fs) fs.readFile(__filename,()setTimeout((){console.log(timeout);}0)setImmediate((){console.log(immediate)}) }) // immediate // timeout在上述代码中setlmmediate永远先执行。因为两个代码写在I/O回调中I / O 回调是在 poll 阶段执行当回调执行完毕后队列为空发现存在setlmmediate回调所以就直接跳转到check阶段去执行回调了。 process.nextTick setTimeout(() {console.log(timer1)Promise.resolve().then(function () {console.log(promise1)}) }, 0) process.nextTick(() {console.log(nextTick)process.nextTick(() {console.log(nextTick)process.nextTick(() {console.log(nextTick)process.nextTick(() {console.log(nextTick)})})}) }) // timers: setTimeout // 微任务队列nextTicknextTick 有一个自己的队列独立于事件循环每个阶段执行完成后如果存在 nextTick就会清空队列中的所有回调函数并且优先于其他 微任务队列 执行。 4. Node.js 事件循环和浏览器事件循环的区别 浏览器环境下微任务队列在每一个宏任务执行完之后执行。node.js 环境微任务会在事件循环的各个阶段之间执行每一个阶段执行完毕都会去清空微任务队列中的任务。 通过事件循环Node.js 实现了高效的异步 I/O 操作并能够处理大量的并发连接适用于构建高性能的网络应用程序。
http://www.pierceye.com/news/414868/

相关文章:

  • 响应式网站设计的优点国内优秀设计网站
  • 网站开发集成环境国内html5网站欣赏
  • iis7.5 没有默认网站北京seo的排名优化
  • 两学一做网站是多少钱营销型网站策划怎么做
  • 渭南做网站的自建房设计图
  • 移动网站建设价格线上推广专员是干嘛的
  • 做化妆刷的外贸网站企业网站托管备案
  • 湖南省建设干部学校 网站金融直播室网站建设
  • 贵州建设厅特殊工种考试网站photoshop平面设计教学视频
  • 怎么推广我的网站代理网站推荐
  • wordpress主题站模板做网站跟做APP哪个容易
  • 杭州网站建设公司推荐网站建设优化服务渠道
  • php是网站开发语言吗做网站前端需要编程基础吗
  • python 网站开发 前端企业信用信息系统官网
  • 公司网站设计有哪些使用技巧呢商城网站建设怎么收费
  • 东莞做网站平台安阳营销型网站建设
  • 如何查看网站开发语言百度排行榜风云榜
  • 泉州 网站建设公司首选广告设计公司名字有寓意有创意
  • 天津个人做网站慈利网站制作
  • 专门做推广的网站吗宿迁房价2023年最新房价
  • 0基础12天精通网站建设网站建设 全网推广
  • 东莞网站营销推广公司移动应用开发案例
  • 妇科医院网站建设怎么做网站建设培训心得体会
  • 网站建设 管理正能量网站入口地址
  • 做网站没有创意Wordpress国际收款
  • 网站推广关键词工具wap网站分享到微信
  • 哪个网站可以给图片做链接做网站的公司在哪
  • 搬瓦工可以长期做网站广告制作开票大类是什么
  • 高级网站开发工信部小企业门户网站建设
  • 网站建站知识秦皇岛汽车网站制作