react navite process.nextTick 和 Promise.then 的执行顺序

在 React Native 里,process.nextTick() 和 Promise.then() 的执行顺序,不能简单套用浏览器的 Event Loop 规则。关键取决于 RN 使用的 JS Runtime(Hermes / JSC)以及 RN 的调度机制。

如果是在常见的 Hermes 环境下,可以先记住:

javascript 复制代码
process.nextTick(() => {
  console.log('nextTick');
});

Promise.resolve().then(() => {
  console.log('promise');
});

console.log('sync');

通常输出:

arduino 复制代码
sync
nextTick
promise

也就是:

arduino 复制代码
同步代码
   ↓
process.nextTick
   ↓
Promise.then
   ↓
其他异步任务

为什么?

Node.js 中,process.nextTick() 有一个专门的 nextTick queue,优先级高于 Promise microtask:

arduino 复制代码
┌─────────────────────┐
│ 同步 JavaScript      │
└──────────┬──────────┘
           ↓
┌─────────────────────┐
│ process.nextTick    │  ← 更高优先级
└──────────┬──────────┘
           ↓
┌─────────────────────┐
│ Promise microtask   │
│ queue               │
└──────────┬──────────┘
           ↓
┌─────────────────────┐
│ timer / IO / ...    │
└─────────────────────┘

但是这里有一个非常重要的 RN 特殊点:

RN 不是 Node.js

React Native 里的:

arduino 复制代码
process.nextTick

并不是因为 RN 运行在 Node.js 中才存在的。RN/Metro 可能提供 Node API 的 polyfill,而不同 RN 版本、Hermes/JSC 配置下具体实现可能不同。

所以不要把下面这个 Node.js 结论无条件套到 RN:

arduino 复制代码
process.nextTick > Promise.then

尤其是现代 React Native + Hermes 环境,process.nextTick 的行为需要看实际 runtime/polyfill。

你可以直接测试:

javascript 复制代码
console.log('1');

process.nextTick(() => {
  console.log('2 nextTick');
});

Promise.resolve().then(() => {
  console.log('3 promise');
});

queueMicrotask?.(() => {
  console.log('4 microtask');
});

console.log('5');

如果你的目标是解决 RN 中某段代码到底谁先执行 的问题,最好把你当前 RN 版本、Hermes/JSC,以及这段代码贴出来,我可以按 RN Event Loop → Hermes Microtask → MessageQueue → React Scheduler 给你画出完整执行链。

相关推荐
沙漠之主12 小时前
C++编程教学设计资料:从入门到实战的完整课程方案
java·前端·c++
hasty13 小时前
不上传新包,也能改变用户拿到的版本:npm dist-tag 的 OIDC 权限治理
前端·npm·node.js
Csvn13 小时前
diff 算法(虚拟 DOM Reconciliation)
前端
前端snow14 小时前
ai agent --- 文件存储
前端
Frag0ut14 小时前
Chrome四大版本获取及共存指南:Stable/Beta/Dev/Canary
前端·chrome·浏览器·dev·beta·canary·共存版
IT_陈寒16 小时前
SpringBoot自动配置坑了我一把,原来是这样绕过去的
前端·人工智能·后端
广州华水科技16 小时前
单北斗GNSS变形监测在大坝安全监测中的应用与优势
前端
zeng不错16 小时前
B站 173 个投稿活动看到眼瞎?我写了个扩展,主打一个精准打击
前端
Latchh16 小时前
前端导出的JPEG红字发糊,质量要拉到100才清楚
前端·图像处理·人工智能·计算机视觉
默_笙16 小时前
🚦 请三个 AI 考官给 RAG 打分:量化评估实战(下)
前端·javascript