new promise同步异步
时间: 2023-11-22 21:35:26 浏览: 72
Promise 解决异步问题
Promise构造函数是同步执行的。这意味着当我们创建一个新的Promise实例时,Promise的构造函数会立即执行。在构造函数中的代码会立即执行,不会等待其他代码的执行完成。所以,Promise构造函数的执行是同步的。
然而,then方法是异步执行的。当Promise的状态改变为已完成(fulfilled)时,then方法中的回调函数会被放入微任务队列中,等待JavaScript引擎空闲时执行。因此,then方法中的代码不会立即执行,而是在Promise的状态改变后异步执行。
举个例子来说明:如果我们有以下代码:
```
new Promise(resolve => {
console.log(1);
resolve(3);
}).then(num => {
console.log(num);
});
console.log(2);
```
输出结果将会是:1, 2, 3. 这是因为Promise构造函数是同步执行的,所以会先输出1和2。而then方法中的回调函数是异步执行的,所以会最后输出3。
另一个例子是:
```
let a1 = new Promise(() => {
setTimeout(() => {
console.log(1);
}, 1000);
console.log(2);
});
console.log(3);
```
输出结果将会是:2, 3, 1。这是因为Promise构造函数是同步执行的,所以会先输出2和3。而setTimeout函数是异步执行的,所以会在1秒后输出1。
综上所述,Promise构造函数是同步执行的,then方法是异步执行的。
阅读全文