async function say() { console.log(3); await new Promise((resolve, reject) => { setTimeout(() => { console.log(1); resolve() }) }).then(() => { console.log(4); }) console.log(2); } say() console.log(5);
时间: 2024-04-12 17:33:08 浏览: 94
这段代码的执行结果是:
3
1
4
2
5
首先,函数`say`被调用,打印出3。然后,`await`关键字暂停了代码的执行,直到`Promise`对象的状态变为resolved。在这个`Promise`中,通过`setTimeout`函数设置了一个延迟,1秒后打印出1,并且调用`resolve`方法将`Promise`状态变为resolved。接着,通过`.then()`方法注册的回调函数打印出4。
然后,`await`关键字继续执行剩下的代码,打印出2。最后,在`say()`函数外部,打印出5。
相关问题
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。
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。
阅读全文