You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中传入Promise构造函数的匿名函数由谁在何时调用?

问题结论

你传入Promise构造函数的匿名函数一定会被执行,完全不需要你手动调用,也和你后续是否调用你提到的.this(推测为输入笔误,无论是什么后续调用操作)都没有关系,会直接修改myPromise的状态与值。

底层原理说明

  • 你传给Promise构造函数的这个匿名函数有统一名称叫 executor(执行器函数),这是ECMAScript规范明确规定的Promise构造逻辑:当你执行new Promise(executor)创建实例时,Promise构造函数的内部代码会同步、立刻调用你传入的这个executor函数,不需要外部做任何触发操作。
  • 你给出的示例代码中,执行到let myPromise = new Promise(...)这一行时,内部就已经完成了如下操作:
    1. 调用你传入的匿名executor函数,自动传入myResolve、myReject两个参数函数
    2. 执行函数内的逻辑,判定x为0,调用myResolve("OK")
    3. 将myPromise的状态从pending直接修改为fulfilled,结果值设置为"OK"
  • 后续的.then调用只是给已经状态敲定的Promise注册成功/失败的回调函数,和executor要不要执行没有任何关系。哪怕你删掉所有.then相关的代码,executor还是会正常执行完成,myPromise的状态和值也会被修改,只是你没有注册回调去读取这个结果而已。

内容的提问来源于stack exchange,提问作者Vahid Kamyab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:51:02