new Promise()返回的promise是在执行器一执行完就同步解析还是拒绝?

问题描述 投票:0回答:1

据说执行构造函数的回调(称为执行器)

new Promise()
始终是同步执行的,因此,出现了以下问题:

  1. 执行器被称为同步(一旦构造Promise),
    resolveFunc
    rejectFunc
    函数为 争论。

new Promise()
also返回的promise是否在执行器执行后立即同步解析或拒绝?

const myPromise = new Promise((resolve, reject) => {
  if (/* some condition */) {
    resolve('Promise fulfilled');
  } else {
    reject('Promise rejected');
  }
});

// The promise has been created and its fate (resolved or rejected) is now determined.
// But we can only see its status when JavaScript has completed the execution of the current code and has emptied the callstack

我不想做具体的事情,我只是想评估我的知识

javascript asynchronous promise synchronous
1个回答
0
投票

这有点有趣,从技术上来说你可以说它是

sync
,但从功能上来说它看起来是
async

我的意思是,Promise 被放置到所谓的

mIcroTask
队列中,该队列在下一个
mAcroTask
队列 => 事件循环之前被耗尽。这就是为什么仍然可以使用纯粹的 Promise 来挂起,而这些 Promise 并不能做真正的
async
事情。

下面是一个示例,您会注意到似乎

Promise
已被执行
async
,但实际上并没有,只是它们被放置在
microTask
队列中,并在下一个事件循环之前耗尽了所有
sync
。 .

运行下面的示例,您会注意到

myPromise
运行得就像
async
一样,并且真正的
setTimeout
在此之后会触发。

async

© www.soinside.com 2019 - 2024. All rights reserved.