executor函数在new Promise时立刻同步执行,不等待后续代码;其内部console.log、resolve等均为同步操作,但resolve调用后状态变更被推入微任务队列,.then回调异步执行。

executor 函数在 new Promise 时**立刻、同步执行**,不等后续代码,也不受异步操作影响。
executor 是构造函数的一部分,一创建就运行
Promise 构造函数接收一个函数作为唯一参数,这个函数就是 executor。JS 引擎在实例化 Promise 的那一行,就直接调用它——和普通函数调用一样,属于当前同步执行栈的一部分。
- 哪怕 executor 内部写了 setTimeout 或 fetch,executor 本身仍同步执行
- console.log、变量赋值、resolve/reject 的调用都发生在同步阶段
- 它不是“注册后等待触发”,而是“new 的瞬间就执行”
典型执行顺序验证
看这段代码的输出顺序就能确认:
console.log('1. 开始');
const p = new Promise((resolve) => {
console.log('2. executor 正在运行');
resolve('ok');
});
console.log('3. Promise 创建完毕');
使用约定式提交(Conventional Commits)生成标准化的 Git 提交信息。适用于以下场景: (1) 暂存更改时需要提交信息; (2) 审查 diff 时希望获得结构化摘要; (3) 编写 PR 描述或变更日志(changelog)条目; (4) 用户明确要求“为本次更改编写提交信息”。 该功能会分析已暂存/未暂存的 diff,并生成按类型(type)划分范围的提交信息。
实际打印是:1 → 2 → 3,说明 executor 没有延迟,紧接在 new 后立即运行。
resolve 和 reject 也是同步传入,但状态变更异步
executor 的两个参数 resolve 和 reject 是 JS 引擎提前准备好的函数,一进 executor 就可用。但注意:
- 调用 resolve('data') 这一行是同步的
- 但 Promise 实例的内部状态(pending → fulfilled)不会立刻更新,而是被推入微任务队列
- 所以 .then() 回调总在本轮同步代码结束后才执行










