StudyCode
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);