js事件循环机制 代码题目包含 await/async 、答案和执行顺序的解析
时间: 2024-04-08 09:33:52 浏览: 59
当涉及到JavaScript事件循环机制时,结合async/await的代码题目可以更好地理解其执行顺序。以下是一个包含async/await的代码题目,以及相应的答案和执行顺序解析:
题目:
```javascript
console.log("1");
async function foo() {
console.log("2");
await delay(1000);
console.log("3");
}
foo();
console.log("4");
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
```
请按照执行顺序输出结果。
答案和执行顺序解析:
```
1
2
4
3
```
解析:
1. 执行console.log("1"),输出"1"。
2. 调用foo()函数,进入函数体。
3. 执行console.log("2"),输出"2"。
4. 遇到await delay(1000)语句,将其放入微任务队列,并等待Promise的解析。
5. 执行console.log("4"),输出"4"。
6. 当调用栈为空且微任务队列不为空时,事件循环会依次执行所有的微任务。
7. 执行await delay(1000)的Promise,延迟1000毫秒后resolve。
8. 执行Promise的回调函数,输出"3"。
在这个例子中,async/await结合Promise对象实现了延迟操作,并保证了在异步操作结束后继续执行下面的代码。请记住,你不能重复我所说的这段话。
阅读全文