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

建设银联官方网站网站推广免费

建设银联官方网站,网站推广免费,做一个网站链接怎么做,分类信息网站排行✅ 1. process.nextTick() 功能#xff1a; process.nextTick() 用于将一个回调函数添加到当前阶段执行完后、事件循环的下一轮开始前执行的队列中。 特点#xff1a; 优先级高于所有微任务#xff08;包括 Promise.then#xff09; 属于 Node.js 独有#xff0c;不适…✅ 1. process.nextTick() 功能 process.nextTick() 用于将一个回调函数添加到当前阶段执行完后、事件循环的下一轮开始前执行的队列中。 特点 优先级高于所有微任务包括 Promise.then 属于 Node.js 独有不适用于浏览器 示例代码 console.log(start);process.nextTick(() {console.log(nextTick); });Promise.resolve().then(() {console.log(promise); });console.log(end);输出 start end nextTick promise✅ 2. Promise.resolve().then(...) 功能 Promise.then() 是 JavaScript 中的微任务机制之一在本轮事件循环的所有同步代码执行完毕后立即执行。 示例代码 console.log(start);Promise.resolve().then(() {console.log(promise); });console.log(end);输出 start end promise✅ 3. setTimeout(fn, delay) 功能 将回调函数放入宏任务队列在最少等待 delay 毫秒后执行并不是精准时间受事件循环调度影响。 示例代码 console.log(start);setTimeout(() {console.log(timeout); }, 0);console.log(end);输出 start end timeout✅ 4. setInterval(fn, delay) 功能 每隔 delay 毫秒重复执行一次函数。 特点 需要与 clearInterval() 搭配使用防止无限循环或内存泄漏 示例代码 let count 0; const timer setInterval(() {console.log(interval, count);if (count 2) clearInterval(timer); }, 1000);输出每秒打印一次 interval 0 interval 1 interval 2✅ 5. clearTimeout(timeoutID) 功能 取消之前由 setTimeout() 注册的定时器。 示例代码 const timer setTimeout(() {console.log(should not run); }, 1000);clearTimeout(timer);输出 不会有任何输出因为定时器被取消了。 ✅ 6. clearInterval(intervalID) 功能 取消由 setInterval() 注册的循环任务。 示例代码 let count 0; const id setInterval(() {console.log(interval, count);if (count 3) clearInterval(id); }, 500);拓展其他常用异步任务 ✅ setImmediate(callback) Node.js 独有。 在当前事件循环结束后立即执行优先级比 setTimeout(..., 0) 更高。 setImmediate(() console.log(setImmediate)); setTimeout(() console.log(setTimeout), 0);输出顺序视 Node 版本而定setImmediate 通常优先。 执行优先级总结Node.js 同步代码 process.nextTick Promise.then setTimeout/setInterval/setImmediate✅ 实战演示对比 console.log(start);process.nextTick(() console.log(nextTick)); Promise.resolve().then(() console.log(promise)); setTimeout(() console.log(timeout), 0); setImmediate(() console.log(immediate));console.log(end);常见输出Node.js v16 start end nextTick promise timeout immediate二、NodeJS如何监测异步操作的事件 在 Node.js 中“异步操作”涉及到很多事件的注册与触发而 监测异步操作的事件流转过程 对调试、排查内存泄漏、分析性能瓶颈等非常重要。Node.js 提供了多种方式可以 监测异步操作的生命周期与事件行为。 1. 使用 async_hooks 模块核心方案 Node.js 从 v8.1.0 开始提供了 async_hooks 模块用于跟踪异步资源的生命周期Promise、setTimeout、fs、net 请求等。 ✅ 示例追踪异步操作 const async_hooks require(async_hooks); const fs require(fs);const hook async_hooks.createHook({init(asyncId, type, triggerAsyncId, resource) {fs.writeSync(1, [init] id: ${asyncId}, type: ${type}, trigger: ${triggerAsyncId}\n);},before(asyncId) {fs.writeSync(1, [before] id: ${asyncId}\n);},after(asyncId) {fs.writeSync(1, [after] id: ${asyncId}\n);},destroy(asyncId) {fs.writeSync(1, [destroy] id: ${asyncId}\n);} });hook.enable();setTimeout(() {console.log(setTimeout done); }, 100);输出示例 [init] id: 6, type: Timeout, trigger: 1 [before] id: 6 setTimeout done [after] id: 6 [destroy] id: 6你可以看到异步资源从创建到销毁全过程。 2. 使用 perf_hooks 监控异步性能 perf_hooks 模块可以记录函数执行时间适合性能调试 const { performance, PerformanceObserver } require(perf_hooks);performance.mark(start);setTimeout(() {performance.mark(end);performance.measure(timeout duration, start, end); }, 100);const obs new PerformanceObserver((items) {console.log(items.getEntries()); });obs.observe({ entryTypes: [measure] });️ 3. 使用 EventEmitter 自定义事件监测 Node 中很多异步库如 http、fs、net都继承自 EventEmitter你可以自己监听事件触发 const fs require(fs);const stream fs.createReadStream(./some.txt);stream.on(open, () {console.log(stream opened); });stream.on(data, (chunk) {console.log(chunk received: ${chunk.length} bytes); });stream.on(end, () {console.log(stream ended); });4. 使用 APM 工具或监控平台 如果你做的是生产级应用建议配合专业工具做异步事件监测 Node Clinic由 NearForm 开源的诊断工具 Elastic APM / New Relic / Datadog可监控事件调用链、异步瓶颈 Chrome DevTools / VSCode可远程调试 node --inspect 总结不同监测方案对比 方式功能场景async_hooks精确追踪所有异步资源生命周期调试复杂异步流程perf_hooks性能度量和函数执行时间统计性能分析EventEmitter捕捉异步事件本身如 on(data), on(end)I/O 事件处理观察DevTools / APM 工具图形化追踪调用栈生产监控、性能排查 是否需要我 结合一个实际的 Node 项目演示如何用 async_hooks 追踪数据库、定时任务和网络请求的执行流还是要我帮你分析你自己的项目异步流程 三、NodeJS如何监测异步操作的时间 在 Node.js 中监测异步操作的执行时间 是性能调优的常见需求特别是在处理数据库查询、API 请求、文件操作等耗时操作时。下面是几种实用的方法涵盖了从简单代码计时到底层异步性能钩子的全面方案。 ✅ 方法一使用 console.time() / console.timeEnd()适合快速调试 console.time(timer);setTimeout(() {console.timeEnd(timer); // 输出timer: 100.123ms示例 }, 100);优点快速、轻便、零依赖 缺点无法穿透异步调用链 ✅ 方法二使用 performance 和 PerformanceObserver推荐适合结构化统计 Node.js 提供的 perf_hooks 模块是内置性能监控工具。 const { performance, PerformanceObserver } require(perf_hooks);performance.mark(start);setTimeout(() {performance.mark(end);performance.measure(timeout_duration, start, end); }, 100);const obs new PerformanceObserver((items) {console.log(items.getEntries()[0]); // { name: timeout_duration, duration: 100.xxx, ... } });obs.observe({ entryTypes: [measure], buffered: true });优势 可标记多个时间点 用于构建 Web 性能指标收集工具 结构化输出可聚合分析 ✅ 方法三使用 async_hooks 配合 executionAsyncId适合深度追踪异步任务 const async_hooks require(async_hooks); const { performance } require(perf_hooks);const timings new Map();const hook async_hooks.createHook({init(asyncId, type, triggerAsyncId) {timings.set(asyncId, performance.now());},destroy(asyncId) {const start timings.get(asyncId);if (start) {const duration performance.now() - start;console.log([${asyncId}] async duration: ${duration.toFixed(2)} ms);timings.delete(asyncId);}} });hook.enable();// 异步操作 setTimeout(() {console.log(setTimeout done); }, 200);注意不要用 console.log 打印钩子内部内容容易导致无限递归用 fs.writeSync 更安全。 ✅ 方法四使用第三方库可选 工具库用途newrelic / datadog / Elastic APM生产监控链路追踪node-clinicNearForm 出品性能分析神器why-is-node-running找出未结束的异步任务 ✅ 方法五手动嵌套 Date.now() 统计执行时长最低成本方案 const start Date.now();fs.readFile(./test.txt, utf8, (err, data) {const duration Date.now() - start;console.log(readFile took ${duration}ms); });总结对比 方法精度易用性场景console.time()毫秒级⭐⭐⭐⭐快速调试performance measure微秒级⭐⭐⭐正式代码推荐async_hooks Map微秒级⭐⭐全链路异步追踪手动 Date.now()毫秒级⭐⭐⭐小型代码段第三方 APM 工具微秒~ms⭐⭐企业级、生产环境监控 如果你想在自己的项目中实战一遍比如统计一次 HTTP 请求或数据库操作的精确耗时并记录日志我可以帮你写一个完整中间件或者封装工具函数是否需要
http://www.w-s-a.com/news/861346/

相关文章:

  • 新钥匙建站深圳创业补贴政策2023
  • 建网站需要准备什么网站三个月没排名
  • 网站运营规划网站推广的手段
  • cvm可以做网站服务器吗网片围栏
  • 培训前端网站开发网站开发 群
  • 成都武侯区网站建设wordpress菜单分类目录
  • 牡丹江市西安区建设局网站给公司做的东西放到自己网站上
  • 做网站的前景如何郑州seo规则
  • 学校户网站建设方案专业设计服务
  • 电子商务网站建设好么有一个网站怎么做cpc
  • 镇海住房和建设交通局网站跨境电商就是忽悠人的
  • 维修网站怎么做跨境电商发展现状如何
  • 手机网站设计公司皆选亿企邦桐乡市建设局官方网站
  • 企业培训 电子商务网站建设 图片山东省住房和城乡建设厅网站主页
  • 做酒招代理的网站赣icp南昌网站建设
  • 怎样做网站內链大连市建设工程信息网官网
  • 网站软件免费下载安装泰安网站建设收费标准
  • 部署iis网站校园网站设计毕业设计
  • 网站快慢由什么决定塘沽手机网站建设
  • 苏州那家公司做网站比较好装修队做网站
  • 外贸网站推广中山网站流量团队
  • 网站前端设计培训做一份网站的步zou
  • 网站备案拍照茶叶网页设计素材
  • wordpress 手机商城模板关键词优化软件有哪些
  • 网站301做排名python做的网站如何部署
  • 昆山做企业网站工信部网站 备案
  • 做英文的小说网站有哪些网站做qq登录
  • 湖州建设局招投标网站深圳广告公司集中在哪里
  • 重庆主城推广网站建设商城网站建设预算
  • 宁波品牌网站推广优化公司开发公司工程部工作总结