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
方法的回调函数是异步执行的,它们被添加到微任务队列中,在当前同步任务执行完毕后才会执行。