这个问题与Difference between microtask and macrotask within an event loop context非常相似,但更为具体,因为它要求解释一个明确的例子:我认为出于这个原因,它不应被视为重复。
在node.js执行此代码期间,Macrotask队列和Microtask队列处于什么状态?
console.log("A1");
(async ()=> {
console.log("1")
f = async ()=>{console.log('2')}
await f()
console.log("3")
})()
console.log("A2");
输出:
A1
1
2
A2
3
我期望的输出结果是:A1, A2, '1', '2', '3'
根据这样的推理:log A1 --> 将匿名函数放入微任务队列 --> log A2 --> 执行匿名函数 log 1,将 f 放入微任务队列 --> 从微任务队列执行 f --> log 2 --> log 3
我错在哪里了?(另外,顶级异步函数是如何排队的?)
备注:实际使用的命令是 npx babel-node myscript.js