跳到主要内容

Promise 构造函数是同步执行还是异步执行,那么 then 方法呢 ?

参考答案:

Promise 构造函数本身是同步执行的,而 then 方法是异步执行的。

当你创建一个新的 Promise 对象时,它的构造函数会立即执行。这意味着你可以在构造函数中执行同步代码,例如:

let promise = new Promise((resolve, reject) => {
  console.log('Promise constructor executed');
  resolve('Success!');
});

console.log('After Promise constructor');

在这个例子中,你会首先看到 "Promise constructor executed" 被打印出来,然后是 "After Promise constructor"。这是因为 Promise 构造函数是同步执行的。

然而,then 方法注册的回调函数是在 Promise 解决或拒绝之后异步执行的。这意味着即使你在 then 方法后面立即写了一些代码,这些代码也可能在 then 方法的回调函数之前执行。例如:

let promise = new Promise((resolve, reject) => {
  resolve('Success!');
});

promise.then(result => {
  console.log('Promise resolved', result);
});

console.log('After then method');

在这个例子中,你会首先看到 "After then method" 被打印出来,然后是 "Promise resolved Success!"。这是因为 then 方法的回调函数是异步执行的,它们被添加到微任务队列中,在当前同步任务执行完毕后才会执行。