Const imgContainer = document.querySelector('.images');
async function showAvatar() {
let githubResponse = await fetch(`[URL юзера в API github, не пропускает антиспам] `);
let githubUser = await githubResponse.json();
let img = document.createElement('img');
img.src = githubUser.avatar_url;
img.className = 'promise-avatar-example';
document.body.append(img);
await new Promise((resolve, reject) => setTimeout(resolve, 3000));
img.remove();
return githubUser;
}
showAvatar();
Код выше просто показывает аватарку пользователя на гитхабе, я только начал учить JS и был бы рад, если бы подсказали, почему код не работает, если из
let githubResponse = await fetch(`[URL юзера в API github, не пропускает антиспам] `);
let githubUser = await githubResponse.json();
сделать вот это ( т. е. убрать второй await )
let githubResponse = await fetch(`[URL юзера в API github, не пропускает антиспам] `);
let githubUser = githubResponse.json();
Какую функцию он выполняет? Первый Await же останавливает работу этой функции, пока не будет выполнена загрузка. А что делает второй await?
Буду очень благодарен за адекватный ответ.
JavaScript
JavaScript, зачем нужен второй await в данном примере
Если некая функция возвращает Promise, то работать с ним ты можешь либо при помощи then, либо при помощи await.
someFunctionReturnsPromise().then(result => {
});
Или await. Иначе с Promise-объектами не поработаешь.
Что он делает? Тоже какую-то асинхронную задачу. Возможно, ожидает ещё данных запроса.
someFunctionReturnsPromise().then(result => {
});
Или await. Иначе с Promise-объектами не поработаешь.
Что он делает? Тоже какую-то асинхронную задачу. Возможно, ожидает ещё данных запроса.
В этом случае:
let githubResponse = await fetch(`[URL юзера в API github, не пропускает антиспам] `);
let githubUser = githubResponse.json();
выполняется сначала вторая строка, а потом первая. Именно так - сначала выполняется синхронный код, потом асинхронный (промисы и таймеры).
Для понимания, как работают асинхронные функции в JS, почитай про цикл событий - микро- и макрозадачи. И еще раз пройдись по промисам и fetch.
И писать второй await не совсем корректно. Как написал Максим, лучше использовать .then () - он выполнится после того, как выполнится промис (т. е. в твоем случае запрос по какому-то URL)
let githubResponse = await fetch(`[URL юзера в API github, не пропускает антиспам] `);
let githubUser = githubResponse.json();
выполняется сначала вторая строка, а потом первая. Именно так - сначала выполняется синхронный код, потом асинхронный (промисы и таймеры).
Для понимания, как работают асинхронные функции в JS, почитай про цикл событий - микро- и макрозадачи. И еще раз пройдись по промисам и fetch.
И писать второй await не совсем корректно. Как написал Максим, лучше использовать .then () - он выполнится после того, как выполнится промис (т. е. в твоем случае запрос по какому-то URL)
Манч Манч
Вторая строка не выполнится, т. к. стоит await. Это новое ключевое слово языка, чтобы не писать громоздкие конструкции с .then()
Когда ты вызываешь fetch, ты ждешь ответ от сервера. Поэтому он асинхронный, т. е. твой код может выполняться дальше и делать полезные вещи, пока ждешь. Когда ты получил ответ от сервера, у тебя есть только заголовки и поток с содержимым, откуда еще придется твой json считать.
Это как если ты бы ждал доставки, машина приехала, его нужно ещё разгрузить и ты снова ждешь.
У видео, например, поток может не закрываться очень долго. Как читаются такие большие ответы можешь посмотреть тут https://learn.javascript.ru/fetch-progress
Это как если ты бы ждал доставки, машина приехала, его нужно ещё разгрузить и ты снова ждешь.
У видео, например, поток может не закрываться очень долго. Как читаются такие большие ответы можешь посмотреть тут https://learn.javascript.ru/fetch-progress
Владимир Тарабаев
Шикарная аналогия, спасибо
Похожие вопросы
- Зачем нужен prototype в JavaScript?
- Можете привести примеры функции перемешивания массива в javascript? -_-
- Как составить синтаксис JavaScript для автозаполнения формы * (к примеру, анкеты) нажатием на кнопку ** ?
- Зачем нужны классы в JavaScript?
- Есть ли аналоги JavaScript?
- С чего начать учить JavaScript?
- Подскажите книги для изучения javascript? Хочу начать изучать веб программирование javascript подойтет для начала?
- javascript - при обучение данного яп, стоит ли одновременно изучать его фреймворк, если да, то какой?
- JavaScript как в данном коде передавать значения не в alert а чтобы отображалось в input после каждого нажатия кнопки
- Тяжело ли выучить JavaScript?