当你使用 async 关键字定义一个函数时,这个函数会返回一个 Promise。而当你在这个函数内部使用 await 关键字时,你实际上是在“等待”一个 Promise 的解决(fulfilled)或拒绝(rejected)。在等待期间,async 函数会暂停执行,并允许其他代码(包括其他微任务或宏任务)运行。
// 假设有一个返回Promise的函数
function fetchData() { return new Promise((resolve, reject) => { setTimeout(() => { resolve('Data fetched!'); }, 1000); });
} // 使用async/await的异步函数
async function processData() { console.log('Starting data processing...'); // await会暂停当前函数,等待Promise解决 const data = await fetchData(); // 当Promise解决后,下面的代码作为微任务执行 console.log(data); console.log('Data processing finished!');
} // 调用异步函数
processData(); // 同步代码会立即执行
console.log('Processing started outside async function.'); // 输出顺序:
// "Starting data processing..."
// "Processing started outside async function."
// (等待1秒后)
// "Data fetched!"
// "Data processing finished!"