async函数
async函数是一个特殊的函数,它内部包含异步操作,并且返回一个Promise对象。在async函数中,我们可以使用await关键字来等待一个Promise对象的解析,并在解析完成后继续执行下一行代码。
以下是async函数的基本语法:
代码语言:javascript复制async function functionName() {
// 异步操作
// 使用await等待Promise对象的解析
// 继续执行下一行代码
}
await关键字
在async函数内部,可以使用await关键字来等待一个Promise对象的解析。await会暂停async函数的执行,直到Promise对象的状态变为已解析(resolved)并返回结果,然后将结果赋值给变量。
以下是await关键字的基本语法:
代码语言:javascript复制let result = await promise;
在上述语法中,promise
是一个Promise对象,result
是解析后的结果。在等待期间,async函数会暂停执行,直到promise对象的状态变为已解析。
示例
下面是一个示例,演示了如何使用async函数和await关键字处理异步操作:
代码语言:javascript复制function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function fetchData() {
console.log('Fetching data...');
await delay(2000); // 模拟异步操作
console.log('Data fetched!');
return 'Data'; // 返回数据
}
async function processData() {
try {
const data = await fetchData(); // 等待fetchData函数完成
console.log('Processing data:', data);
// 其他数据处理逻辑
} catch (error) {
console.error('Error occurred:', error);
}
}
processData();
在上述示例中,我们定义了两个async函数:fetchData()
和processData()
。在fetchData()
函数中,我们模拟了一个异步操作,通过await
关键字等待2秒钟后,返回一个数据。在processData()
函数中,我们调用了fetchData()
函数并使用await
关键字等待其完成。在try...catch
语句块中,我们对可能发生的错误进行捕获和处理。
当我们调用processData()
函数时,它会按照顺序执行异步操作。在控制台输出中,我们可以看到执行过程中的日志信息,包括"Fetching data..."、"Data fetched!"以及"Processing data: Data"。