middleasync
Как работает async/await?
Ответ
async/await — синтаксический сахар над промисами/корутинами. async помечает функцию как асинхронную, она всегда возвращает Promise/Task/coroutine. await приостанавливает выполнение функции до завершения асинхронной операции, не блокируя поток.
JSJavaScriptPYPythonC#C#
Примеры кода:
JSJavaScript
async function fetchUser(id) {
try {
const response = await fetch(`/api/users/${id}`);
const user = await response.json();
return user;
} catch (error) {
console.error("Ошибка:", error);
}
}
// Параллельное выполнение
const [user, posts] = await Promise.all([
fetchUser(1),
fetchPosts(1),
]);PYPython
import asyncio
import aiohttp
async def fetch_user(session, user_id):
async with session.get(f"/api/users/{user_id}") as resp:
return await resp.json()
async def main():
async with aiohttp.ClientSession() as session:
# Параллельно
user, posts = await asyncio.gather(
fetch_user(session, 1),
fetch_posts(session, 1),
)C#C#
async Task<User> FetchUserAsync(int id)
{
using var client = new HttpClient();
var response = await client.GetAsync($"/api/users/{id}");
var user = await response.Content
.ReadFromJsonAsync<User>();
return user;
}
// Параллельно
var userTask = FetchUserAsync(1);
var postsTask = FetchPostsAsync(1);
await Task.WhenAll(userTask, postsTask);