await 是一个在异步编程中使用的关键字,特别是在支持异步编程模型的编程语言中,如Python、JavaScript等。它用于等待一个Promise(JavaScript)或协程(Python中的asyncio库)的结果,使得程序能够以非阻塞的方式处理异步操作,比如网络请求、文件I/O操作等,从而提高程序的响应性和效率。
JavaScript中的await
在JavaScript中,await 必须在一个被 async 关键字标记的异步函数内部使用。它使得你可以像处理同步代码那样编写异步逻辑,而无需回调函数或 Promise 链。
async function fetchData() {
try {
const response = await fetch('https://api.example.com/data');
const data = await response.json(); // 等待响应体被解析为JSON
console.log(data);
} catch (error) {
console.error('Error fetching data:', error);
}
}
fetchData();
Python中的await
在Python中,await 用于异步函数(由 async def 定义)内部,等待一个协程(coroutine)完成。它允许编写简洁、易于理解和维护的并发代码,特别是在处理I/O密集型任务时。
import asyncio
async def fetch_data():
async with aiohttp.ClientSession() as session:
async with session.get('https://api.example.com/data') as response:
data = await response.json() # 等待获取JSON数据
print(data)
asyncio.run(fetch_data())
在这两个示例中,await 都暂停了当前的异步函数执行,直到等待的异步操作完成(例如HTTP请求的响应到达并被处理)。这样,程序可以在这段时间内去做其他事情,而不是空等,提高了资源利用率。