Вопрос проверяет понимание двух способов работы с Promise и умение объяснить их различия на уровне кода и читаемости.
async/await и .then() работают поверх Promise и дают одинаковые возможности. Разница в том, что async/await позволяет писать асинхронный код в синхронном стиле, улучшая читаемость. .then() использует цепочки колбэков и чаще приводит к вложенности. С точки зрения выполнения и производительности они эквивалентны.
Оба подхода решают одну и ту же задачу, но по-разному организуют код.
.then() — метод Promise, принимающий колбэк, который выполнится после резолва.
async/await — синтаксический сахар над Promise, позволяющий писать асинхронный код линейно.
.then()fetchData()
.then(data => process(data))
.then(result => save(result))
.catch(error => handleError(error));
async function run() {
try {
const data = await fetchData();
const result = await process(data);
await save(result);
} catch (error) {
handleError(error);
}
}
Читаемость
async/await читается сверху вниз.
.then() сложнее при длинных цепочках.
Обработка ошибок
async/await использует try/catch.
.then() — .catch().
Отладка
Стек вызовов проще читать с async/await.
Гибкость
.then() удобно для коротких цепочек.
async/await — для сложной логики.
Выбор между async/await и .then() — вопрос читаемости и стиля, а не возможностей или производительности.