Тёмный

Урок 8. JavaScript. Как работает Async, Await. Работа с сервером c fetch 

Владилен Минин
Подписаться 309 тыс.
Просмотров 299 тыс.
50% 1

Опубликовано:

 

26 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 286   
@VladilenMinin
@VladilenMinin 11 месяцев назад
Эксклюзивный контент на моем Boosty: boosty.to/vladilen
@mgm_smile
@mgm_smile 5 лет назад
Как всегда все четко и по теме. Владилен ты делаешь огромный вклад в развитие ру комьюнити, спасибо тебе =)
@VladilenMinin
@VladilenMinin 5 лет назад
Благодарю за отзыв)
@tyortyo
@tyortyo 4 года назад
Офигенное объяснение. Здорово, что приведено сравнение с промисами, тогда все понятно становится! Супер
@АлексадрМироненко-ю8р
Владилен, очень хорошо понимается материал благодаря твоим видео! Однозначно лучший контент. Если это возможно рассмотри систематизацию своих видео с дополнительными задачами по материалу. Уверен будет вообще пушечно
@Vlad-em1bx
@Vlad-em1bx 4 года назад
Это лучший материал по JS на русскоязычном youtube. Отдельно хотелось бы поблагодарить Вас Владилен за курс по Vue. Он превосходен. Он помог мне довольно быстро вникнуть во Vue. Посоветовал его одному коллеге верстальщику, он также остался им очень доволен. Спасибо Вам огромное! :)))
@nikdanik
@nikdanik 5 лет назад
Про веб воркеры было бы супер! Классный видос, лайк
@realfootball338
@realfootball338 4 года назад
про sharedArrayBuffer семафоры мютексы и атомарные операции.
@awenn2015
@awenn2015 3 года назад
Твоя мечта сбылась
@bekzhan356
@bekzhan356 3 года назад
ещё вебсокеты каеф
@Wraith2401
@Wraith2401 5 лет назад
на мой взгляд самое доступное объяснение работы async/await в рунете. лайк/подписка
@wininf0
@wininf0 Месяц назад
о арыстан ассалаумагалейкум братан
@radikovichkz2470
@radikovichkz2470 3 года назад
Владилен вы не поверите: но во время создания промиса вместо setTimeout(()=>r(),ms) можно просто записать setTimeout(r,ms); r - это есть resolve, и мы передаём ссылку на функцию в качестве колбека
@hugor778
@hugor778 2 месяца назад
Чудесно объяснил, благодарочка 🤙
@qazxswedc389
@qazxswedc389 5 лет назад
огромное спасибо за видео!!! такого понятного и простого объяснения async/await я еще не встречал. очень классные и понятные видео
@VladilenMinin
@VladilenMinin 5 лет назад
Благодарю за отзыв, рад такому результату)
@nicksimmons4722
@nicksimmons4722 4 года назад
в прошлом году доходило долго, а в этом намного легче и уже сразу понятно)) очень информативные и понятные уроки) спасибо за труды
@mikurrey416
@mikurrey416 5 лет назад
Большущее спасибо :) Без таких знаний асинхронность не хило выносит мозг)))
@unknownWakeborder
@unknownWakeborder 4 года назад
Я в свое время так намучался с получение данных с апи.... а тут было все так доступно. Очень полезно, спасибо тебе за контент!
@Vlad-jp3co
@Vlad-jp3co 2 года назад
Твои уроки раскрывают суть каждой концепции. Ты описываешь проблему и механизм в языке, который эту проблему решает. Информация так усваивается намного лучше. В других уроках описывают некоторые факты о части языка и не говорят как это использовать и новичок не понимает как он это может применить. Спасибо большое за труд
@СтаниславСеменов-щ1п
Конструктивно и максимально доходчиво.
@nivaech
@nivaech 4 года назад
Владилен, спасибо. Благодаря твоему каналу время карантина вследствие чертового коронавируса проходит как нельзя плодотворно.
@ИгорьИгорь-с3ю
@ИгорьИгорь-с3ю 3 года назад
Люблю такие видосы. Где не льют 50 минут теорию со слайдами на своем птичьем наречии, а за 14 минут на практике показывают как, да чё. Спасибо автору!
@АнтонПетренко-ш4ш
@АнтонПетренко-ш4ш 4 года назад
Очень круто обьясняешь. Коротко и по делу!)) Pozdrawiam z Polski!!!
@MrFeedme86
@MrFeedme86 5 лет назад
Владилен топ! Если у тебя будет своя школа, я пойду туда учиться :D
@StalkerRaftik
@StalkerRaftik 3 года назад
Усложнил все до невозможности. Не знаю насчёт остального, но это видео было максимально сложным для новичка
@СтасикЛис
@СтасикЛис 2 года назад
я чувствую себя максимально тупым последние несколько уроков
@АртурБеленченко
@АртурБеленченко 4 года назад
Благодарю Вас Владилен! С Вами очень интересно изучать JavaScript!)
@awenn2015
@awenn2015 3 года назад
Согласен, у других смотрел так и не понял что такое promise, async and await, методы массивов, которые новые map и тд, а тут все сразу стало понятно, и операторы rest и spread туда же, столько полезных вещей которыми я раньше не пользовался, жаль конечно))
@nikishiro8278
@nikishiro8278 5 лет назад
Спасибо. Про Webpack круто было бы послушать :)
@VladilenMinin
@VladilenMinin 5 лет назад
Думаю сделаю быстрый курс по нему)
@Fxgleb
@Fxgleb 5 лет назад
Посмотрев этот ролик я прям осознал что такое асинхронность в жс и в чем разница между then и await (наконец таки)
@VladilenMinin
@VladilenMinin 5 лет назад
Ура!)
@ВладиславЦерковный
Очень подробно разжевал!спасибо огромное за труд
@void6237
@void6237 Год назад
"Фетчить некоторые туду", буду теперь это говорить когда меня спрашивают чем я занимаюсь
@ГеннадийГорохов-ц8н
Спасибо за урок очень мощьный курс по JavaScript
@АлексейМохров-е9н
@АлексейМохров-е9н 2 года назад
Все-таки Promise и async/await одна из самых сложных тем в JS. Но после таких уроков все становится сразу понятно
@charliebrown5554
@charliebrown5554 Год назад
100%
@27sosite73
@27sosite73 2 года назад
ska, ты топ, Владилен спасиобо
@KaelnsLarien
@KaelnsLarien 7 месяцев назад
Самое главное, что смотря на async await может показаться, что мы только ждём код и всё. НО, как и then, await не блокирует код, а просто откладывает выполнение действующей функции (или call stack если смотреть глобальнее) и продолжит выполнять код дальше Такой код выведет 3 1 4 2. Если уже поставить await верхнего уровня перед вызовом функции, то уже будет 3 1 2 4, так как мы уже дожидаемся этой функции и по сути смысла в асинхронности тогда нет. Код внутри промиса выполняется синхронно, поэтому туда реально нужно ложить то, чего вы хотите подождать типа запроса или того же setTimeout ```JavaScript async function f() { console.log("1") let promise = new Promise((resolve, reject) => { setTimeout(() => resolve("готово!"), 1000) }); let result = await promise; // будет ждать, пока промис не выполнится (*) console.log("2") alert(result); // "готово!" } console.log("3") f(); console.log("4") ```
@Grigoren_com
@Grigoren_com Год назад
спасибо за ролик! очень полезная информация
@uracan7872
@uracan7872 5 лет назад
Спасибо за видео! Proxy теперь нужен)
@dushnilas
@dushnilas 4 года назад
Спасибо тебе Владилен за твои видосы.
@phonty29
@phonty29 2 года назад
Your teaching is very good. Thank you
@ammoney159
@ammoney159 3 года назад
Спасибо большое за видосы красавчик!
@mumin_f
@mumin_f 4 года назад
Спасибо! Переписывал store для авторизации из урока по Vue CRM, там была готовая библиотека firebase, а мне надо было через API реализовывать. Это видео очень выручило!
@azalinka3721
@azalinka3721 3 года назад
спасибо за такое прекрасное обьяснение!!!
@svdl3000
@svdl3000 4 года назад
Отличное видео - аккуратное объяснение важных истин простым языком.
@spiteman
@spiteman 3 года назад
попробовал заменить в своем микропроекте .then на async/await и получилось даже еще более громоздко, может чуть читается легче, так и мне никто не мешает .then переносить на новую строку.
@gorbulevsv
@gorbulevsv 2 года назад
Спасибо, все очень доступно!!!
@kookaburru
@kookaburru 5 лет назад
async/await это синтаксический сахар на генератор/промис, где генератор используется для превращения асинхронного кода в синхронный, а промис для выполнения асинхронного кода. То есть тут суть в генераторе, а промис деталь реализации генератора. Промис можно заменить на простой обратный вызов (callback).
@yakut54
@yakut54 5 лет назад
Влад, ты красавчик! Спасибо тебе за науку! Вкладываешь знания в наши бестолковые головы.
@VladilenMinin
@VladilenMinin 5 лет назад
Не думаю, что они бестолковые, иначе как бы они нашли мой канал:) Шучу конечно, но за отзыв спасибо
@MrVertu01
@MrVertu01 2 года назад
Спасибо за урок!
@temirkhanamanbaev42
@temirkhanamanbaev42 4 года назад
Классно объяснил, браво! Спасибо!
@null-lu8it
@null-lu8it Год назад
Любишь ты все темы усложнять
@Давид-п8и
@Давид-п8и 5 лет назад
Супер видео! Спасибо вам! Плейлист тоже классный!
@VladilenMinin
@VladilenMinin 5 лет назад
Благодарю за отзыв)
@МИСТЕРУГОЛЁК
@МИСТЕРУГОЛЁК 5 лет назад
Спасибо, но это уже тяжеловато было понять) Усугубилось всё стрелочными функциями
@lumeaceaiuluisrl6343
@lumeaceaiuluisrl6343 4 года назад
Владилен, спасибо за урок!
@admusmanov3009
@admusmanov3009 2 года назад
Обожаю тебя!!!
@alexandrskuratovich1394
@alexandrskuratovich1394 2 года назад
А почему стоит await на response.json() , это ведь уже синхронная операция? И можно ли делать return в async методах?
@lidijajezova2025
@lidijajezova2025 2 года назад
Метод json() возвращает промис.
@СвятославДворський
Блин, ты крут, человек! Учился по твоему ангуляр курсу, теперь вот доучиваю в ютубе. Супер!
@АлександрМелянюк-ц9ю
Спасибо, Добрый Человек!!!
@Pr0xytube
@Pr0xytube 5 лет назад
Спасибо, урок действительно полезный. Впрочем, как всегда)
@NextgenSocialReptile
@NextgenSocialReptile 5 лет назад
Благодарю)
@talas12341
@talas12341 5 лет назад
всегда так - смотришь, всё понятно, начинаешь делать, ну нихуя не понятно‼ пока собственными ручками не сделаешь, хрен поймешь‼
@ХалидИбнВалид-т1э
@ХалидИбнВалид-т1э 4 года назад
Это всегда так ! )
@konstantinsoluyanov8505
@konstantinsoluyanov8505 4 года назад
сначала смотришь, потом делаешь, потом еще раз смотришь, благо youtube иногда подкидывает уже просмотренные ролики
@Lynatik001
@Lynatik001 4 года назад
я помню когда делал все через then только, понимал что это крутая штука что позволяет дождатся асинхронной функции, словить результат и далее его обрабатывать. ну как асинк и авейт. про промисы вобще не шарил думал промис = асинхронному методу. типа так называют в яваскрипте просто так ХД)
@yaroslavzef7267
@yaroslavzef7267 4 года назад
И это он еще не самый понятливый объяснятель)
@ricojohn8249
@ricojohn8249 3 года назад
@@yaroslavzef7267 а кто самый понятливый?
@onlynowmotivation
@onlynowmotivation 3 года назад
Спасибо большое! От души!!!
@Abdul-hy4cy
@Abdul-hy4cy 2 года назад
Как ты круто объясняешь! Последовательно, по уровню сложности.
@spiteman
@spiteman 3 года назад
Пишу из 2021, вроде посмотрел внимательно урок по Promise и первый пример функции меня "убил наповал". Полез разбираться, что чего и как и в итоге, что получилось, для тех кто так же не понял как я: const delay = (ms) => new Promise((r) => setTimeout(r, ms)); Во первых это короче и даже понятнее. Итак что у нас происходит, пишу как все еще ученик: присваиваем переменной ссылку на безымянную стрелочную функцию с параметром ms она в свою очередь возвращает Promise, который возвращает по исполнении функцию setTimeout через ms миллисекунд.
@Скыбыдыщь
@Скыбыдыщь 5 лет назад
Это чертовски полезно
@enotus_chang
@enotus_chang Год назад
Пожалуй, самое понятное объяснение. Спасибо.
@iznu3
@iznu3 3 года назад
Спасибо за видео!
@Скыбыдыщь
@Скыбыдыщь 5 лет назад
Так же хорошая идея на счёт парсера на node js , на Ютубе нормальных видео нет вообще, а в статьях говорят только как спарсить в самой ноде а как это уже на свою html страницу вывести нет. Тут как раз и fetch будет нужен, потому что нужно будет как то делать запрос на сервер что бы получить эти данные
@VladilenMinin
@VladilenMinin 5 лет назад
NodeJS на сервере, там не будет fetch Скорее какой нибудь request
@Скыбыдыщь
@Скыбыдыщь 5 лет назад
@@VladilenMinin ну если допустим есть парсер на ноде и он выводит текст только в терминале, то что бы его переместить себе в html нужно поднять сервер и сделать к нему запрос(тем же fetch) ,так ведь? Нода же не имеет доступ к дому, поэтому только так. И вот такого описания парсера с нуля и до момента вывода себе в html нету вообще нигде, ни в одном русском источнике
@АлександрШейка-ц5ь
@@Скыбыдыщь Все, что вы спарсите, кроме картинок, надо закидывать в базу. А дальше все работает как обычный сайт.
@yasenclassen
@yasenclassen 3 года назад
10:15 зачем писать await repsonse.json() если мы уже ждем fetch который запишет результат в переменную response после того как отработает, по идее await для repsonse.json() уже не нужен, или я не прав? @Владилен Минин
@dreawmy2912
@dreawmy2912 2 года назад
без .json() ты не получишь тело ответа
@Скыбыдыщь
@Скыбыдыщь 5 лет назад
Теперь уж точно прям очень нужен прокси
@ZhanOmar
@ZhanOmar 2 года назад
Помню как мучался с созданием небольшого API на NodeJS с использованием пакетов MySQL, fs и http(s), где нужно было просто вернуть файл, перед этим найдя его в БД. Вот там меня и выбесил mysql пакет со своим коллбэком и необходимостью передавать в него request из пакета http, чтобы вернуть пользователю данные. Благо в пакете mysql2 был предусмотрен синхронный метод 😅
@damir-n1
@damir-n1 2 года назад
Спасибо Вам большое, Владилен. Очень доступно.
@jimmayhem990
@jimmayhem990 10 месяцев назад
Спасибо большое за отличное объяснение! Не совсем понял момент с .then(() => { return fetch(url) } .then(response => response.json()) fetch() возвращает Promise, then() оборачивает все что в return в новый Promise. Получается, что результат then() - Promise? Как тогда последующий then() вызывает у этого объекта json() ?
@s.konstantin
@s.konstantin 5 лет назад
Спасибо! Как всегда все понятно. Красавчик!
@AbraKadabra000
@AbraKadabra000 5 лет назад
красиво шпарит. на двойной скорости послушал. всо чотко
@ВладХобта-ч3и
@ВладХобта-ч3и 2 года назад
Очень сложно для меня, плохо запоминается, что нибудь можете посоветовать, как разобраться в этой теме?
@plan-4D
@plan-4D 2 года назад
Такая же фигня. Надо писать, писать и писать. ИМХО.
@PizekattoX
@PizekattoX 5 лет назад
Отлично обяснил, понятно и без лишних слов
@dartoranges
@dartoranges 3 года назад
Владилен ты не представляешь как ты мне помог этим уроком!!!!
@web2905
@web2905 3 года назад
Спасибо за видео :)
@artemzhuravlenko9955
@artemzhuravlenko9955 4 года назад
9:40 я не понял, почему операция получения .json() асинхронна? Мы ведь уже получили объект с сервера строкой выше.
@trueMoRoZ
@trueMoRoZ 3 года назад
Такая же история. Выглядит будто создатели перекурили со словами "а давайте напихаем промисы везде!"
@KlinovAS
@KlinovAS 2 года назад
@@trueMoRoZ Безумие программистов. Мол если IDE нам не помогает понять код, то мы придумаем гениальную свою идею. Сумасшествие и только.
@FillPower
@FillPower 5 лет назад
Set & Map Weak Map, примеры использования следующее пожалуйста)
@VladilenMinin
@VladilenMinin 5 лет назад
Быть может отдельный плейлист по ES6?
@FillPower
@FillPower 5 лет назад
Владилен Минин, было круто, если сделали бы
@slaty331
@slaty331 2 года назад
На 6:35 для тех кому трудно понять, как и мне, избавьтесь от setTimeoute. Пишите пустой промис const p = new Promise((resolve)=>resolve()). Сам setTimeoute путает, да до этого он нужен был, чтоб эмулировать ответ от сервера, но тут путает дополнительным синтаксисом. Для понимания порядка выполнения кода, лучше раcставить в разных частях console.log
@vladislavivanov4124
@vladislavivanov4124 4 года назад
Спасибо! Лучший)
@RewCSharp
@RewCSharp 10 месяцев назад
Спасибо за урок!
@АлексейКлещёв-т4п
@АлексейКлещёв-т4п 4 года назад
Было бы оч круто освятить ещё такие темы: деструктуризация, rest, spread, каррирование, метод flat у объектов, мемоизация, полиморфы/полифиллы, monkey patching... Да много ещё чего вспомнить можно. Просто это часто на собесах спрашивают, хотя на практике многое из этого практически не используется. Но для понимания каверзи знать стоит. Впрочем, автору виднее
@VladilenMinin
@VladilenMinin 4 года назад
Так на канале почти все вещи эти освещены в других роликах
@АлексейКлещёв-т4п
@АлексейКлещёв-т4п 4 года назад
@@VladilenMinin а, тогда пардон) я недавно на вашем канале. Планирую пересмотреть много чего тут) p.s. смотрю на юдеми ваши курсы многие
@VladilenMinin
@VladilenMinin 4 года назад
Вливайся и добро пожаловать)
@independent3253
@independent3253 Год назад
Круто 👍
@Fioletka_YT
@Fioletka_YT 3 года назад
лаконичный вариант Владелина async function fetchTodos() { try { await delay(2000) console.log(await ( await fetch(url)).json()) } catch(err) { console.error(err) } }
@alexgrinberg1888
@alexgrinberg1888 3 года назад
Владилен! Спасибо за ваши уроки. Я часто смотрю ваши уроки на iPhone. Нельзя ли поменять черный бэкграунд на белый, чтобы лучше был виден код? Спасибо!
@parlaitaliano
@parlaitaliano Год назад
Я что-то поняла, неужели, офигеть! но боюсь что окажется, что рано радуюсь, что все-таки не поняла, потому что я не могу поверить, что я наконец это поняла. Спасибо Вам
@shaxanematov8516
@shaxanematov8516 4 года назад
fetchAsyncTodos().then(console.log).catch(console.log) можно было и так писать вместо try, catch ведь эта функция всегда возвращает промис
@Lynatik001
@Lynatik001 4 года назад
2рую функию фетч туду чисто для того что бы это масивнее выглядело по сравнению с 3емя строчками. на самом деле мог бы 3тий .then дописать в той же функции дописать. и это выглядело по размеру почти так же. Причина тут лишь в понятливости, и каллбек функциях. И что оно яко бы приятней выглядит. Но на самом деле then тоже неплох. Но да, если есть возможность то лучше юзать асинк + авейт
@ИльяЖабров-и5ч
@ИльяЖабров-и5ч 2 года назад
Подскажите, а зачем второй раз прописывать await? Там же вроде как уже синхронно можно response в json перевести
@rigoremplasticsinnovates5143
@rigoremplasticsinnovates5143 2 года назад
Добрый день, подскажите как дальше работать с data ? Или только внутри промиса и больше никак не вывести data в глобальную зону видимости?
@Нормчё-е5у
@Нормчё-е5у 4 года назад
Спасибо большое за видео) Очень доступно и понятно!!! Владилен, вы не могли бы снять видео про pwa во vue-cli3? Или оно уже есть, а я не нашла на канале?
@yuramaster4354
@yuramaster4354 2 года назад
thank you again )
@Briz231
@Briz231 3 года назад
Малюсенький вопрос: я правильно понимаю, что работа всей страницы при наличии такого кода останавливается до того момента, пока не выполнится "виртуальный промис" в виде таймера delay? Или это просто отдельный поток где js выполняет для конкретной функции свой код и затем возвращает его? Ну, то есть, если мы присвоим переменной эту функцию, к ней можно будет обратиться только через 2 секунды, и всё это время скрипт будет недоступен?
@artemijeka
@artemijeka 2 года назад
Спасибо!
@dossh429
@dossh429 4 года назад
Кстати, необходимо к переменной url в конце /1. Выглядит так const url = 'jsonplaceholder.typicode.com/todos/1'
@Snake98365
@Snake98365 2 года назад
c 1 в конце не выводит сообщение дата
@sapperus
@sapperus 4 года назад
Круто, спасибо!
@Nikita-hr6ss
@Nikita-hr6ss 5 лет назад
А как быть когда надо делать fetch запросы в цикле? Условно в коде который описал ниже, там где console.log хочу ещё помимо синхронно выполнить fetch запрос. Или вообще можно как-то более правильно чисто async await-ами всё переписать? let count = 0; function printer() { return new Promise(resolve => { setTimeout(()=>{ resolve(console.log('+2 sec...')) }, 2000) }); } (async _ => { console.log('Start') while (count
@bodomzor
@bodomzor 5 лет назад
Красава Вледилен!
@АнтонБ-щ8ю
@АнтонБ-щ8ю 3 года назад
у меня одного ошибка "VM586:10 GET jsonplaceholder.typicode.com/todos net::ERR_FAILED" ?
@АлександрКоковкин-о6п
Видосы огонь, Владилен, спасибо за работу)) Но не въехал зачем нужна задержка в 2сек.
@АлександрШейка-ц5ь
Для наглядности. В реальных проектах никакие задержки не нужны.
@kuzub4ik
@kuzub4ik 4 года назад
а как это можно применить в цикле? К примеру при прохождении массива циклом, если данные подходят по условиям, нужно выполнить еще две функции которые делают fetch запросы и нужно чтобы была асинхронность, чтобы сперва выполнилась getFirstData() потом getSecondData() и цикл корректно отрабатывал
@hmelii
@hmelii 5 лет назад
Если указать недействительную ссылку, то в catch выводится пустой объект. Как понять, какая ошибка пришла от сервера?
@АлександрШейка-ц5ь
Если ссылка не действительна, то и сервера никакого нет. Просто некому отвечать на запрос. Смотрите инфу в заголовках.
@АртемАртеменко-й8б
по тайп скрипту и ангуляру 8 чет будет?
@VladilenMinin
@VladilenMinin 5 лет назад
Скоро будет много ангуляра)
@VladilenMinin
@VladilenMinin 5 лет назад
@LuckyGamerTV Пока я фокусируюсь на frontend разработке и про базы в ближайшее время не планировал рассказывать Но ближе к осени вернуть и освещу эту тему
@Логовотестировщика
Благодарю!!
@sekirogenshiro2210
@sekirogenshiro2210 4 года назад
хороший урок
Далее
На самом деле, все не просто 😂
00:45
Думайте сами блин
18:15
Просмотров 515 тыс.
SENIOR on JUNIOR Javascript Developer interview
26:35
Просмотров 328 тыс.
7 Лет Опыта в IT | Что я Понял?
19:56