взять значение авайтом?
Нуу, это совсем частный кейс Автор там явно не это пытался сделать)
Зачем вообще цепочки строить, если можно await использовать?
Выше писал: если хочешь параллельные запросы сделать
это обычно решается через Promise.all/allSettled
Ну, а если ты хочешь каждый из промисов обработать сразу после завершения?
это можно сделать заранее, создав массив промисов, где будет асинхронный коллбэк и любая нужная тебе обработка
асинхронный колбэк = квазипромис
ты этот промис ждешь ниже через all/allSettled, поэтому он вполне себе полноценный и работает как обычно
Я написал что одним await некоторые ситуации не сделать. Запрос одновременный на бэк двух фетчей, каждый из них должен резолвнуть response в json, после обоих резолвов надо сделать вывод Как напишешь такое только на await?
Я чуть выше скидывал скрин об этом
это другой случай
В чем разница?
await Promis.all([ fetch(url1).then(r => r.json()); fetch(url2).then(r => r.json()); ]); Первый fetch выполняется 1 секунду, конвертация в json - 2 секунды Второй fetch выполняется 2 секунды, конвертация в json - 1 секунду Итого всё выполняется 3 секунды Напиши то же самое на await чтобы занимало 3 секунды
const first = async () => { const data = await fetch('url'); // takes 1 second const json = await data.json(); // takes 2 seconds console.log(json); }; const second = async () => { const data = await fetch('url'); // takes 2 seconds const json = await data.json(); // takes 1 second console.log(json); }; await Promise.all([first(), second()]); // takes 3 seconds любой кейс можно точно так же переписать на await, просто в разных ситуациях может быть где-то удобнее then, а где-то await
Ты вводишь новые сущности, которых не было, и которые просто эмулируют цепочку then промисов await - бинарен. Промисы позволяют удобно работать с небинарными состояниями асинхронной функции. Компьютер тоже разбивает всё в итоге на 0 и 1.
Так никто не топит за await, речь идет о том, чтобы не смешивать стили в "одном предложении"
Сначала - да Потом поднялся вопрос об их эквивалентности
Они в своей природе -- одно. Это факт. Но облегчив один из аспектов использования, усложнили другой. Обычное дело
в реальных кейсах эти “новые сущности” уже созданы - это функции, которые как раз делают запрос и обрабатывают его, ты же не пишешь их каждый раз инлайново поэтому там ты просто импортируешь нужные функции и ждешь их через Promise.all + очень часто можно спокойно дождаться завершения всех запросов и потом уже что-то делать, либо вообще делать ничего не нужно
Обсуждают сегодня