Promise的构造函数中如果执行同步代码,调用resolve时会立马更新状态吗
Promise的构造函数中如果执行同步代码,调用resolve时会立马更新状态吗,我的理解是resolve是一个微任务,会变更状态,执行then注册的回调,所以在下面的代码中,promise1
应该是pending状态,此时调用栈还在执行本轮宏任务,尚未执行微任务,但是在Chrome中,控制台输出的promise1
已经是fulfilled。
代码如下:
const promise1 = new Promise((resolve, reject) => {
console.log('promise1');
resolve('resolve1');
})
const promise2 = promise1.then((res) => {
console.log(res);
});
console.log('1', promise1);
console.log('2', promise2);
Chrome中结果如下:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
更新状态不意味就立马要去执行回调。状态是在微任务期间判断是否执行该回调的依据
变更状态这个操作是同步执行的。传入promise的executor是同步执行,可以调用它的入参resolve或者reject函数改变状态。所以也是同步调用。而resolve和reject本身的执行也是同步的。
下面是简单的不包含then的promise实现