千家信息网

怎么判断是浏览器还是node环境

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章将为大家详细讲解有关怎么判断是浏览器还是node环境,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。node中window是未定义;setImmediate是
千家信息网最后更新 2026年10月31日怎么判断是浏览器还是node环境

这篇文章将为大家详细讲解有关怎么判断是浏览器还是node环境,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

node中window是未定义;setImmediate是定义的,在浏览器中未定义

timer阶段:这个阶段会执行setTimeout和setInterval

check阶段:执行setImmediate

macro task [task] 宏任务 :script(页面代码)、setTimeout、setInterval、I/O事件、UI交互事件(点击事件)

micro task [job]  微任务: Promise、process.nextTick、Promise().then()

宏任务可以有多个队列

微任务只有一个队列

setTimeout任务之间,推迟执行的毫秒数越小,排在队列里面越靠前

在node里面,timers(setTimeout、setInterval)会优先于setImmediate

setTimeout(() => {  console.log('setTimeout')},0);  // 大于1000时,会先执行setImmediatesetImmediate(()=> { console.log('setImmediate')})
console.log('start');setTimeout(function (){  console.log('timeout');},10);new Promise((resolve) => {  console.log('promise');  resolve()  setTimeout(() => {    console.log('Promsie中的setTimeout');  },0);}).then(() => {  console.log('then');});console.log('end');

运行机制

1. 在执行栈中执行一个宏任务。

2. 执行过程中遇到微任务,将微任务添加到微任务队列中。

3. 当前宏任务执行完毕,立即执行微任务队列中的任务。

4. 当前微任务队列中的任务执行完毕,检查渲染,GUI线程接管渲染。

5. 渲染完毕后,js线程接管,开启下一次事件循环,执行下一次宏任务(事件队列中取)。

关于"怎么判断是浏览器还是node环境"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

任务 队列 事件 浏览器 浏览 篇文章 阶段 环境 还是 更多 线程 不错 实用 之间 代码 内容 只有 多个 文章 机制 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳市人人互联网科技有限公司 华服互联网科技怎么样 今日互联网科技 猪兼强互联网科技 郑州华宇互联网科技 齐家互联网科技有限公司 互联网 科技服务平台 四个字互联网科技公司取名 互联网科技生活的内容 宁波青枫互联网科技有限公司 字节跳动和互联网科技 顶级互联网科技成果有哪些 广州新华互联网科技学校电竞方面 群盈汇互联网科技有限公司 四川互联网展示科技馆设计 互联网领先科技宣传片 科技互联网行业投资研究 互联网公司属于科技吗 互联网的黑科技实验室 武汉亿视互联网科技有限公司 江苏根荣互联网科技 科技平台互联网 科技企业和互联网企业 互联网科技社 智网互联网科技 成都仁贤领冠互联网科技有限公司 互联网和黑科技的看法 皮皮虾互联网科技有限公司 互联网风格科技公司名称 广州有谷有贝互联网科技有限公司
0