async function say() { console.log(3); await new Promise((resolve, reject) => { console.log(1); resolve() }) console.log(2); } say() console.log(5);
时间: 2023-10-15 17:05:41 浏览: 101
这段代码的执行顺序如下:
1. 首先,调用了`say()`函数。
2. 在`say()`函数内部,首先打印出了数字3。
3. 创建了一个新的Promise对象,并使用`await`关键字等待Promise对象的状态变为resolved。
4. 在Promise的构造函数中,打印出了数字1,然后调用了`resolve()`方法来将Promise的状态变为resolved。
5. 因为使用了`await`关键字,所以在这里会暂停代码的执行,等待Promise对象的状态变为resolved。
6. 在这个等待的过程中,控制权返回到了`say()`函数的调用点,在这里打印出了数字5。
7. 当Promise对象的状态变为resolved时,代码继续执行,打印出了数字2。
8. 整个代码执行完毕。
所以,最终的输出结果是3、1、5、2。
相关问题
async function say() { console.log(3); await new Promise((resolve, reject) => { // setTimeout(() => { console.log(1); resolve() // }) }) console.log(2); } say() console.log(5);解释一下这个代码的执行顺序
这段代码的执行顺序如下:
1. 首先,调用了`say()`函数。
2. 在`say()`函数内部,首先打印出了数字3。
3. 接着,创建了一个新的Promise对象,并使用`await`关键字等待Promise对象的状态变为resolved。
4. 在Promise的构造函数中,打印出了数字1,然后调用了`resolve()`方法来将Promise的状态变为resolved。
5. 因为使用了`await`关键字,所以在这里会暂停代码的执行,等待Promise对象的状态变为resolved。
6. 在这个等待的过程中,控制权返回到了`say()`函数的调用点,在这里打印出了数字5。
7. 当Promise对象的状态变为resolved时,代码继续执行,打印出了数字2。
8. 整个代码执行完毕。
所以,最终的输出结果是3、5、1、2。
async function say() { console.log(3); await new Promise((resolve, reject) => { console.log(1); resolve() }) console.log(2); } say() console.log(5); 解释一下这段代码的执行顺序
这段代码的执行顺序如下:
1. 首先,调用了`say()`函数。
2. 在`say()`函数内部,首先打印出了数字3。
3. 创建了一个新的Promise对象,并使用`await`关键字等待Promise对象的状态变为resolved。
4. 在Promise的构造函数中,打印出了数字1,然后调用了`resolve()`方法来将Promise的状态变为resolved。
5. 因为使用了`await`关键字,所以在这里会暂停代码的执行,等待Promise对象的状态变为resolved。
6. 在这个等待的过程中,控制权返回到了`say()`函数的调用点,在这里打印出了数字5。
7. 等待Promise对象的状态变为resolved后,代码继续执行,打印出了数字2。
8. 整个代码执行完毕。
所以,最终的输出结果是3、1、5、2。
阅读全文