Promise.resolve(1)未绑定回调时是否涉及微任务队列?
Promise.resolve(1)(无回调绑定)是否涉及微任务? 场景说明
仅执行以下代码,未为返回的Promise绑定任何.then()或.catch()处理函数:
const v = Promise.resolve(1);
基于ECMA 2024规范的分析
根据规范中Promise.resolve及相关抽象操作的执行流程:
Promise.resolve(x)的执行:当传入的x为原始值(此处为1,非对象),会调用内部的PromiseResolve抽象操作,创建新的Promise能力对象后,调用其resolve函数。- Promise解析函数的逻辑:由于
1不是对象,会进入解析函数的步骤8,直接执行FulfillPromise抽象操作。 FulfillPromise的执行:该操作会将Promise状态置为fulfilled,并触发[[PromiseFulfillReactions]]中的回调——但此时这个Promise没有绑定任何回调,所以[[PromiseFulfillReactions]]为空,不会触发任何任务。- 微任务触发的条件:规范中只有在处理thenable对象时,才会通过
HostEnqueuePromiseJob将任务加入微任务队列。而此处处理的是原始值,完全不涉及该步骤。
结论
你的结论正确:仅执行const v = Promise.resolve(1);且未绑定任何回调时,不会涉及任何微任务队列的操作。
内容的提问来源于stack exchange,提问作者a Learner
相关产品推荐
相关产品推荐

