ECMAScript的async/await怎么用
async/await 是 ECMAScript (ES) 2017 引入的一种异步编程模式,它允许你以同步的方式编写异步代码,使得异步代码更易于理解和维护。async 和 await 关键字通常与 Promise 一起使用。
async
async 关键字用于声明一个函数是异步的。异步函数总是返回一个 Promise 对象。如果函数内部返回一个值,该 Promise 将以该值解析;如果函数抛出一个错误,该 Promise 将被拒绝。
async function myAsyncFunction() {
// ...
}
await
await 关键字只能在 async 函数内部使用。它用于等待一个 Promise 解析,并暂停 async 函数的执行,直到 Promise 完成(解析或拒绝)。然后函数会继续执行,并返回解析的值。
async function myAsyncFunction() {
const result = await someAsyncOperation();
console.log(result);
}
示例
下面是一个使用 async/await 的示例,它演示了如何顺序执行两个异步操作:
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function main() {
console.log('Start');
await delay(1000); // 等待1秒
console.log('After 1 second');
await delay(2000); // 等待2秒
console.log('After 3 seconds');
}
main();
在这个示例中,main 函数被声明为 async,因此我们可以在其中使用 await 关键字。delay 函数返回一个在指定毫秒数后解析的 Promise。我们在 main 函数中使用 await 等待这些 Promise 解析,从而实现了顺序执行。
请注意,await 只会暂停它所在的 async 函数的执行,而不会阻塞整个程序。这意味着其他代码和事件仍然可以在等待期间继续执行。