agentmentoragentmentor

Glossary

12 terms from "JavaScript async/await:事件循环与执行顺序详解." Look them up when you get stuck; the first mention in the text carries a hover definition.

TermDefinitionSource
调用栈(call stack)JavaScript 当前正在运行的函数的后进先出列表;调用函数压入一帧,返回时弹出。MDN: JavaScript execution model
单线程(single-threaded)JavaScript 运行在一个线程上,一次只做一件事,不能并行运行两段代码。MDN: JavaScript execution model
run-to-completion每个任务都完整运行结束后其他任务才能开始的规则,因此同步代码总是先于被推迟的回调执行完。MDN: JavaScript execution model
事件循环(event loop)盯着调用栈的机制:栈一空,就从队列里取出下一个回调来运行。MDN: JavaScript execution model
任务队列(task queue)先进先出的队列(也叫回调队列或宏任务队列),setTimeout 这类被推迟的回调在这里等待运行。MDN: JavaScript execution model
task (macrotask)事件循环每次从任务队列取一个来运行的工作单元,例如 setTimeout 的回调或事件处理函数。MDN: JavaScript execution model
microtask在当前代码结束、栈空之后,但在下一个任务之前运行的短回调;promise 的回调就是微任务。MDN: Using microtasks in JavaScript with queueMicrotask()
微任务队列(microtask queue)一个独立的、优先级更高的队列,会在事件循环运行下一个任务之前被彻底清空;正式地说它不是任务队列。HTML Living Standard: Event loops
setTimeout把回调安排到一段延迟之后运行的函数;延迟为 0 表示在事件循环靠后的一轮运行,而不是立刻。MDN: setTimeout()
Promise.prototype.then()在 promise 落定时安排回调(作为微任务)并返回新 promise 的方法;回调永远异步运行。MDN: Promise.prototype.then()
async function同步运行到第一个 await 并返回 promise 的函数;内部只要有 await,它就总是异步完成。MDN: async function
await只暂停自己所在 async 函数直到 promise 落定的操作符;它把控制权交回调用者,并把函数剩余部分作为微任务恢复。MDN: await