Промисы в Javascript

  Рет қаралды 29,582

JS ACADEMY – Vladyslav Grybennikov

JS ACADEMY – Vladyslav Grybennikov

5 жыл бұрын

В этом видео, мы с вами разберем как работают Promise в javascript. Рассмотрим пример создания собственных общещаний - отжиманий и пресаданий. А так же научимся использовать промисы в разных синтаксисах. Через then/catch, и через async/await!
Код с занятия: github.com/trostinsky/promise...
Ставьте лайк и подписывайтесь!
Instagram: / v.trostinsky
Facebook: / trostinsky
GitHub: github.com/trostinsky

Пікірлер: 86
@Albert_Hall
@Albert_Hall 3 ай бұрын
Четкие примерчики. Прекрасная идея-ассоциация с тренировкой 🎉
@vitaliy8290
@vitaliy8290 2 ай бұрын
Спасибо, достаточно полно и понятно раскрыта тема.
@goblin4089
@goblin4089 3 жыл бұрын
Это видео очень сильно помогло мне. До этого я посмотрел несколько видосов и никак не мог врубиться даже зачем используют setTimeOut. Благодарю!
@user-yv3wc1cm8f
@user-yv3wc1cm8f 4 жыл бұрын
Классный урок. Просто и понятно. Спасибо!
@natikgr3262
@natikgr3262 4 жыл бұрын
Отличное объясняете, спасибо!
@uxuidesigner6952
@uxuidesigner6952 4 жыл бұрын
Огромное спасибо! Вторые сутки пытаюсь детально понять promise (async-await), вот с Вашим видео дошло наконец! Побольше таких видосов!
@jsacademy772
@jsacademy772 4 жыл бұрын
Благодарю :) У меня в планах есть вторая часть по более сложным концепциям, например, множественным промисам!
@KseniiaNaum
@KseniiaNaum 3 жыл бұрын
Крутой урок, я стала ближе к пониманию промисов, чем после просмотра нескольких видосов и чтения доков.
@jsacademy772
@jsacademy772 3 жыл бұрын
Если будут какие-либо вопросы, пишите, сделаем еще видео!)
@vgshenshin
@vgshenshin Жыл бұрын
Благодарю за урок! Очень доступно объясняете
@kril5903
@kril5903 3 жыл бұрын
Невероятно крутой видос, автор все разложил по полочкам. Спасибо!
@RomanSimonenko
@RomanSimonenko 4 жыл бұрын
Лучшее объяснение о промисах! Спасибо!
@jsacademy772
@jsacademy772 4 жыл бұрын
Спасибо! Очень приятно знать, что делаю что-то важное!
@maybeminsk
@maybeminsk Жыл бұрын
Спасибо. Очень наглядно и доходчиво!
@justfisher2920
@justfisher2920 Жыл бұрын
Бомбезное объяснение👍
@calm_and_happy-dt
@calm_and_happy-dt 2 жыл бұрын
Спасибо, хороший и очень понятный пример использования Промисов.
@NeoJohnSmit
@NeoJohnSmit 3 жыл бұрын
Большое спасибо, очень полезный урок.
@oleksiik4473
@oleksiik4473 4 жыл бұрын
Очень круто!! Очень доступно!
@mszulya4100
@mszulya4100 3 жыл бұрын
спасибо за четкое объяснение!
@user-kn3ut1sh2o
@user-kn3ut1sh2o 3 жыл бұрын
Лучшее объяснение для чего нужны промисы! Отдельное спасибо за отличное качество видео и за крупный шрифт в редакторе! Сразу видно, что думали о людях которые будут смотреть ваш ролик.
@jsacademy772
@jsacademy772 3 жыл бұрын
Благодарю)
@iuliiazarfin7578
@iuliiazarfin7578 3 жыл бұрын
Спасибо, самое понятное объяснение из всех, что пересмотрела.
@user-dn8yk9wq7c
@user-dn8yk9wq7c 3 жыл бұрын
хуйнф - ничё не понятно
@dlazder3937
@dlazder3937 8 ай бұрын
Помог вспомнить промисы, благодарю.
@alfa_main
@alfa_main 3 жыл бұрын
Очень круто разъяснил) Спасибо тебе большое, пример очень понятный и практичный лично для меня) Удачи в дальнейших роликах, у тебя талант)
@jsacademy772
@jsacademy772 3 жыл бұрын
Спасибо большое!) Очень мотивируют такие сообщения!
@user-qv4hn6qq4n
@user-qv4hn6qq4n 3 жыл бұрын
Самое понятное объяснение из всех что я видел, скорей всего за счёт понятных абстракций. Подписка.
@jsacademy772
@jsacademy772 3 жыл бұрын
Спасибо!)
@nouchance
@nouchance 3 жыл бұрын
Спасибо большое процветанию твоему каналу удачи тебе бро!!!
@magerrrr
@magerrrr 3 жыл бұрын
Спасибо! Хорошее видео и пример хороший !)
@jsacademy772
@jsacademy772 3 жыл бұрын
Спасибо!)
@natanrock9301
@natanrock9301 4 жыл бұрын
Спасибо!
@Deestylovmusic
@Deestylovmusic 3 жыл бұрын
Круто, спасибо
@EvilYou
@EvilYou 2 жыл бұрын
Интересное объяснение с отжиманиями и приседаниями :) Усовершенствовал алгоритм: 1) Теперь при каждом отжимании или приседании в консоль будет выводится, сколько уже выполнено 2) Если задано больше повторений, чем возможно сделать, будет сделано максимум возможных повторений. 3) Если максимум отжиманий достигнут, приседания будут выполняться все равно. // Время на одно повторение отжимания / приседания const pushUpTime = 1000; const squatTime = 700; // Максимум отжиманий и приседаний соответственно const maxPossiblePushUps = 5; const maxPossibleSquats = 20; // Количество отжиманий и приседаний, которое надо выполнить let pushNum = 15; let squadsNum = 10; function pushUps(count) { return new Promise( (resolve, reject) => { let completed = 0; console.log('Приступаю к отжиманиям'); setTimeout(function work() { completed++; console.log('Отжиманий выполнено: ' + completed); if (completed >= maxPossiblePushUps) reject(new Error('too many push ups, tired...')); if (completed < count && completed < maxPossiblePushUps) { setTimeout(work, pushUpTime); } else { resolve('Отжимания выполнены'); } }, pushUpTime); }); } function squats(count) { return new Promise( (resolve, reject) => { let completed = 0; console.log('Приступаю к приседаниям'); setTimeout(function work() { completed++; console.log('Приседаний выполнено: ' + completed); if (completed >= maxPossibleSquats) reject(new Error('too many squats, tired...')); if (completed < count && completed < maxPossibleSquats) { setTimeout(work, squatTime); } else { resolve('Приседания выполнены'); } }, squatTime); }); } pushUps(pushNum).catch(err => { return Promise.resolve(err.message); }).then((result) => { console.log(result); return squats(squadsNum); }).catch(err => console.log(err.message)).finally(() => console.log('Упражнения завершены'));
@jsacademy772
@jsacademy772 2 жыл бұрын
Спасибо) получилось действительно интересно)
@user-pz7zd9ps3h
@user-pz7zd9ps3h 3 жыл бұрын
Спс очень просто и понятно обяснил. С меня лайк
@br_ann
@br_ann 2 жыл бұрын
Спасибо!)
@user-sx6km7zq7z
@user-sx6km7zq7z 3 жыл бұрын
Классное видео, самое хорошее обьяснение промисов
@jsacademy772
@jsacademy772 3 жыл бұрын
Спасибо!:)
@user-te9ci1tx4x
@user-te9ci1tx4x 3 жыл бұрын
спасибо большое
@artembabenko7779
@artembabenko7779 4 жыл бұрын
ой годнота! блин, прям нужно было отдельное видео по этой теме) лайк и репост господа, лайк и репост...
@jsacademy772
@jsacademy772 4 жыл бұрын
Спасибо! Очень рад что видео несёт пользу!)
@diamaxel
@diamaxel 3 жыл бұрын
хороший видос
@stevenson5402
@stevenson5402 3 жыл бұрын
лучший
@oksanagez1169
@oksanagez1169 4 жыл бұрын
сподобалося, хотілося б більше таких коротких і змістовних відео!)
@jsacademy772
@jsacademy772 4 жыл бұрын
Оксана Санаж на какую тему?:)
@user-fs8sl1bt9z
@user-fs8sl1bt9z 4 жыл бұрын
Годно. Не останавливайся!
@jsacademy772
@jsacademy772 4 жыл бұрын
Виктор Астахов спасибо, уже готовлю следующее 😉
@user-ms5vu1zp9d
@user-ms5vu1zp9d 2 жыл бұрын
Надо было функцию Давидыч назвать Сел встал сел встал
@goblin4089
@goblin4089 3 жыл бұрын
Будет супер-полезно, если Вы сделаете ролик с использованием промисов на практике. Очень хотелось бы увидеть, как с помощью них подключаются к БД, например, mysql и выводят что-то на страницу
@jsacademy772
@jsacademy772 3 жыл бұрын
Спасибо за обратную связь!) Думаю это вполне реально, сделать несколько практических примеров! Подумаю и запишу обязательно!)
@user-tp7je2ge2k
@user-tp7je2ge2k 4 жыл бұрын
все супер, но отжимания это push ups, а wring out это выжимать)
@EvilYou
@EvilYou 2 жыл бұрын
может, он жим лежа делает в зале :)
@jorgenUA
@jorgenUA 4 жыл бұрын
хорошо объяснил
@user-tn1sj9zn9q
@user-tn1sj9zn9q 3 жыл бұрын
Очень интересно и информативно! Узнал, что такое promises и Async/await. А то на learnjs читал, не мог понять что это вообще такое. Спасибо) Интересно, почему так редко видео выходят? Времени нет или мотивации?
@jsacademy772
@jsacademy772 3 жыл бұрын
Спасибо за комментарий) Постоянно сам хочу чаще записывать, наверное тут вопрос мотивации, бывает целый день уходит чтобы видео сделать) Думаю добавить донаты какие то и будет чаще)
@micknode9138
@micknode9138 4 жыл бұрын
Даешь async-await туториал!
@jsacademy772
@jsacademy772 4 жыл бұрын
Async/await будет следующим :)
@kalmanbraz7696
@kalmanbraz7696 3 жыл бұрын
@@jsacademy772 вы же уже рассмотрели async await в этом видео
@jsacademy772
@jsacademy772 3 жыл бұрын
@@kalmanbraz7696 на самом деле, в видео не хватает более сложных ситуаций использования Async/Await. Например, когда нам нужно выполнить 3-4 запроса на разные сервера, где очередность важна. Или получить данные по 1000 пользователям из стороннего апи в ограничениями на кол-во запросов от одного клиента (или кол-во запросов в секунду). Тут бывает полезно применять циклы или методы из встроенного Promises API, которые в видео не были рассмотрены, вот об этом и речь :)
@kalmanbraz7696
@kalmanbraz7696 3 жыл бұрын
@@jsacademy772 тогда было бы неплохо сделать видео, чето трудно мне эта тема дается)
@alexsmith526
@alexsmith526 3 жыл бұрын
@@jsacademy772 лол, ну и где?
@yuriiserdiuk3918
@yuriiserdiuk3918 4 жыл бұрын
Хорошее видео , все понравилось )) запущу бота , путь заслуженно пролайкает тебя в инстаграме . лайк и подписка +
@jsacademy772
@jsacademy772 4 жыл бұрын
енди уорхл спасибо!)
@Vladikslavik
@Vladikslavik 3 жыл бұрын
Push-ups, а не wringouts. Второе - это отжимать в смысле отжимать бельё, платок или тряпку.
@Fodintsov
@Fodintsov 3 жыл бұрын
2:19 В функцию без параметров (wringOut) передаем параметр. Как так?
@jsacademy772
@jsacademy772 3 жыл бұрын
Это пример использования на видео, для того, чтобы не усложнять восприятие опущены детали реализации функции. Но есть способ через псевдомассив arguments это сделать, можем пофантазировать что внутри тела функции (...) используется именно он 🙂🙃
@gunners9566
@gunners9566 4 жыл бұрын
Отличный ролик, все так понятно объясниил. Это не официальную документацию читать по несколько раз и в итоге ничего не понимать
@friendly334
@friendly334 4 жыл бұрын
В последнем примере, функция myTraining вернула false из блока catch. Каким образом, результат выполнения попал в then и был выведен в консоль, если был передан только аргумент result, который принимаетзначение из успешно разрешенного промиса?
@jsacademy772
@jsacademy772 4 жыл бұрын
Т.к мы обработали ошибку внутри функции myTraining, эта ошибка у нас вверх не всплывает, мы её перехватили. Поэтому эта функция у нас была успешно выполнена, и т.к в случае ошибки мы возвращаем из функции false, именно он и попал в then
@friendly334
@friendly334 4 жыл бұрын
JS ACADEMY - Влад Грибенников спасибо, а в каком случае, результат бы попал не в then, а в catch?
@jsacademy772
@jsacademy772 4 жыл бұрын
Если бы мы не указали try/catch в функции myTraining, то ошибка как-бы всплывала бы до первого такого обработчика(если он есть). Другими словами: там где мы укажем catch там и словим ошибку :)
@friendly334
@friendly334 4 жыл бұрын
JS ACADEMY - Влад Грибенников ну а если у нас, допустим, ситуация, когда произошла ошибка, выполнение перешло в блок catch и далее у меня есть обработчики then и catch, как мне сделать так, чтобы выполнился код, который прописан в catch?
@jsacademy772
@jsacademy772 4 жыл бұрын
Тут лучше всего пробросить ошибку дальше. В первом catch пишем throw err(err - переменная с ошибкой, то что в скобках catch указано), таким образом можно обработать ошибку даже в двух местах
@user-ve8gx4rj2h
@user-ve8gx4rj2h 4 жыл бұрын
Зачем запятая на 9:35 перед умножением времени на количество ?Без нее не работает,не могу понять какую функцию она выполняет
@jsacademy772
@jsacademy772 4 жыл бұрын
Эта запятая перед вторым аргументом в функции setTimeout. Первый аргумент это функция-коллбек, а второй - когда эта функция должна сработать
@user-ve8gx4rj2h
@user-ve8gx4rj2h 4 жыл бұрын
@@jsacademy772 спасибо
@user-oz3wh1ft3x
@user-oz3wh1ft3x 3 жыл бұрын
в начале видео неправильный синтаксис идет (если конечно это не псевдокод): 1. сначала у автора в переменную const wringOut = () => new Promise(...), записывается анонимная функция без параметров, которую он вызывает дальше с аргументом 10: wringOut(10).then(.....) { в принципе такая логика возможна, если только сам автор в логике Promse использует чтото вроде -> arguments[0] как первый параметр анонимной функции, но чтото я cомневаюсь} 2. буквально в следующем слайде уже в const wringOut = new Promise(...) просто записывается объект(НЕ ФУНКЦИЯ), которая вызывается как функция с аргументом 10 (ошибка!!!) Так же замечу что async/await это не просто синтаксический сахар как например классы. С async/await можно делать то, что с промисами сделать очень сложно. Поскольку оператор await наподобие yield в генераторах, то остановка происходит на каждом выражении перед которым стоит await, что позволяет с легкостью использовать его в циклах, или сложных условиях.
@jsacademy772
@jsacademy772 3 жыл бұрын
На слайдах нет синтаксических ошибок, я в видео делал акцент на том, что троеточие - это реализация функции, которая будет рассмотрена позже) По async/await возможно и правда стоит записать отдельное видео чтобы разъяснить где их лучше/удобнее использовать, однако они все-равно являются синтаксическим сахаром, потому как можно писать и через then, так и через async/await. Второй вариант выглядит просто гораздо аккуратнее, короче и легче воспринимается, но работает все-равно аналогично цепочке промисов 🤷‍♂️
@iMarkusUS
@iMarkusUS Жыл бұрын
Иии примерно через 5 секунд ... пишу код и сам не верю )
@ntvisigoth
@ntvisigoth 3 жыл бұрын
Не надо было пояснять про Promise и async\await вместе. Слишком много упускается вещей! Недостаточно раскрыто вот что: 1. Что является вторым аргументом в then ? и как это связано с catch? 2. Что если асинхронная функция не возвращает промиса, что делать? И причем тут Promisify ? Много чего можно было добавить. Просто не нужно мешать разные темы. Разве что потом, когда уже одно и второе пояснил сделать обобщенную про то как async\await сокращает код
@jsacademy772
@jsacademy772 3 жыл бұрын
По первому не расскрыл, потому, что я считаю второй аргумент в then бесполезным и неэффективным. А второй пункт я вообще не понял) Асинхронная функция всегда возвращает промис, и, действительно, при чем тут Promisify? Я не включил в видео много нюансов, для того, чтобы упростить понимание промисов. Если записывать видео про всё что есть по этой теме, это будет несколько часов, да и думаю таких видео в интернете навалом) Целью этого видео не было дать полную информацию о всех возможных вариантах работы с промисами, а дать знания, которые используются на практике в 95% случаев. Видео расчитано на людей, начинающих знакомство с джаваскриптом, у которых трудности с пониманием как работают промисы.
@ntvisigoth
@ntvisigoth 3 жыл бұрын
@@jsacademy772 Спасибо за старания! Они видны. Но все-таки надо ольше именно было раскрыть про второй параметр. Ведь приходя на работу человек сталкивается с Legacy-кодом, т.е. с тем что уже написано. Одно дело знать Best practices и др. им следовать. Не всегда есть возможность следовать. Более того даже читая код надо знать что он делает, чтоб корректно переписать на best practices . А так да, все супер! ;)
@jsacademy772
@jsacademy772 3 жыл бұрын
Спасибо)
JavaScript Pro Tips - Code This, NOT That
12:37
Fireship
Рет қаралды 2,5 МЛН
Функция reduce на примерах. Решаем задачи на reduce в javascript
17:21
JS ACADEMY – Vladyslav Grybennikov
Рет қаралды 22 М.
ИРИНА КАЙРАТОВНА - АЙДАХАР (БЕКА) [MV]
02:51
ГОСТ ENTERTAINMENT
Рет қаралды 13 МЛН
Smart Sigma Kid #funny #sigma #comedy
00:25
CRAZY GREAPA
Рет қаралды 15 МЛН
Узнай JavaScript лучше: как работать с Promise - then, catch, finall, Promise.all(), Promise.race()
14:53
JAVA И SКРИПТЫ, ссылка на новый канал в описании
Рет қаралды 23 М.
Основы Promise в Javascript на примерах
39:30
Александр Дудукало
Рет қаралды 3,9 М.
Зачем нужны указатели в C++?
8:14
Dima
Рет қаралды 2,7 М.
What are JavaScript PROMISES? 🤞
12:37
Bro Code
Рет қаралды 44 М.
ООП в JavaScript. Get, Set JavaScript, приватные и защищенные свойства
23:01
WebDev с нуля. Канал Алекса Лущенко
Рет қаралды 47 М.
Понимание javascript - замыкания, контекст, callback.
1:45:13
Дмитрий Лаврик
Рет қаралды 144 М.
Просто о promise в JavaScript
12:52
WebDev с нуля. Канал Алекса Лущенко
Рет қаралды 133 М.
ИРИНА КАЙРАТОВНА - АЙДАХАР (БЕКА) [MV]
02:51
ГОСТ ENTERTAINMENT
Рет қаралды 13 МЛН