Промисы в Javascript

Поділитися
Вставка
  • Опубліковано 25 лис 2024

КОМЕНТАРІ • 89

  • @Albert_Hall
    @Albert_Hall 7 місяців тому +2

    Четкие примерчики. Прекрасная идея-ассоциация с тренировкой 🎉

  • @goblin4089
    @goblin4089 3 роки тому +1

    Это видео очень сильно помогло мне. До этого я посмотрел несколько видосов и никак не мог врубиться даже зачем используют setTimeOut. Благодарю!

  • @vitaliy8290
    @vitaliy8290 6 місяців тому

    Спасибо, достаточно полно и понятно раскрыта тема.

  • @dlazder3937
    @dlazder3937 Рік тому

    Помог вспомнить промисы, благодарю.

  • @KseniiaNaum
    @KseniiaNaum 4 роки тому +2

    Крутой урок, я стала ближе к пониманию промисов, чем после просмотра нескольких видосов и чтения доков.

    • @jsacademy772
      @jsacademy772  4 роки тому

      Если будут какие-либо вопросы, пишите, сделаем еще видео!)

  • @iuliiazarfin7578
    @iuliiazarfin7578 3 роки тому +1

    Спасибо, самое понятное объяснение из всех, что пересмотрела.

  • @undefined-n5v
    @undefined-n5v 4 роки тому

    Самое понятное объяснение из всех что я видел, скорей всего за счёт понятных абстракций. Подписка.

  • @ОлегПетров-п4у
    @ОлегПетров-п4у 3 роки тому

    Лучшее объяснение для чего нужны промисы! Отдельное спасибо за отличное качество видео и за крупный шрифт в редакторе! Сразу видно, что думали о людях которые будут смотреть ваш ролик.

  • @ГригорийШумихин
    @ГригорийШумихин 2 роки тому +2

    Надо было функцию Давидыч назвать
    Сел встал сел встал

  • @uxuidesigner6952
    @uxuidesigner6952 4 роки тому +1

    Огромное спасибо! Вторые сутки пытаюсь детально понять promise (async-await), вот с Вашим видео дошло наконец! Побольше таких видосов!

    • @jsacademy772
      @jsacademy772  4 роки тому +1

      Благодарю :) У меня в планах есть вторая часть по более сложным концепциям, например, множественным промисам!

  • @vgshenshin
    @vgshenshin Рік тому

    Благодарю за урок! Очень доступно объясняете

  • @maybeminsk
    @maybeminsk Рік тому

    Спасибо. Очень наглядно и доходчиво!

  • @justfisher2920
    @justfisher2920 Рік тому

    Бомбезное объяснение👍

  • @artembabenko7779
    @artembabenko7779 5 років тому +8

    ой годнота! блин, прям нужно было отдельное видео по этой теме) лайк и репост господа, лайк и репост...

    • @jsacademy772
      @jsacademy772  5 років тому

      Спасибо! Очень рад что видео несёт пользу!)

  • @АлекандраГаращук
    @АлекандраГаращук 4 роки тому +1

    Классное видео, самое хорошее обьяснение промисов

  • @EvilYou
    @EvilYou 3 роки тому +3

    Интересное объяснение с отжиманиями и приседаниями :)
    Усовершенствовал алгоритм:
    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  3 роки тому

      Спасибо) получилось действительно интересно)

  • @RomanSimonenko
    @RomanSimonenko 4 роки тому +1

    Лучшее объяснение о промисах! Спасибо!

    • @jsacademy772
      @jsacademy772  4 роки тому

      Спасибо! Очень приятно знать, что делаю что-то важное!

  • @calm_and_happy-dt
    @calm_and_happy-dt 2 роки тому

    Спасибо, хороший и очень понятный пример использования Промисов.

  • @kril5903
    @kril5903 3 роки тому

    Невероятно крутой видос, автор все разложил по полочкам. Спасибо!

  • @oksanagez1169
    @oksanagez1169 5 років тому +3

    сподобалося, хотілося б більше таких коротких і змістовних відео!)

    • @jsacademy772
      @jsacademy772  5 років тому

      Оксана Санаж на какую тему?:)

  • @alfa_main
    @alfa_main 3 роки тому +2

    Очень круто разъяснил) Спасибо тебе большое, пример очень понятный и практичный лично для меня) Удачи в дальнейших роликах, у тебя талант)

    • @jsacademy772
      @jsacademy772  3 роки тому +1

      Спасибо большое!) Очень мотивируют такие сообщения!

  • @nouchance
    @nouchance 3 роки тому

    Спасибо большое процветанию твоему каналу удачи тебе бро!!!

  • @goblin4089
    @goblin4089 3 роки тому +2

    Будет супер-полезно, если Вы сделаете ролик с использованием промисов на практике. Очень хотелось бы увидеть, как с помощью них подключаются к БД, например, mysql и выводят что-то на страницу

    • @jsacademy772
      @jsacademy772  3 роки тому +1

      Спасибо за обратную связь!)
      Думаю это вполне реально, сделать несколько практических примеров! Подумаю и запишу обязательно!)

  • @mszulya4100
    @mszulya4100 3 роки тому

    спасибо за четкое объяснение!

  • @NeoJohnSmit
    @NeoJohnSmit 3 роки тому

    Большое спасибо, очень полезный урок.

  • @ОлексійШевчук-р8б
    @ОлексійШевчук-р8б 3 роки тому

    Спс очень просто и понятно обяснил. С меня лайк

  • @magerrrr
    @magerrrr 4 роки тому +2

    Спасибо! Хорошее видео и пример хороший !)

  • @АлександрМитькин-ь6в

    Классный урок. Просто и понятно. Спасибо!

  • @natikgr3262
    @natikgr3262 4 роки тому +1

    Отличное объясняете, спасибо!

  • @oleksiik4473
    @oleksiik4473 4 роки тому

    Очень круто!! Очень доступно!

  • @ilyashokhov
    @ilyashokhov 4 місяці тому

    Урок супер

  • @АраГорн-ж5ы
    @АраГорн-ж5ы 3 роки тому

    Очень интересно и информативно! Узнал, что такое promises и Async/await. А то на learnjs читал, не мог понять что это вообще такое. Спасибо) Интересно, почему так редко видео выходят? Времени нет или мотивации?

    • @jsacademy772
      @jsacademy772  3 роки тому

      Спасибо за комментарий) Постоянно сам хочу чаще записывать, наверное тут вопрос мотивации, бывает целый день уходит чтобы видео сделать)
      Думаю добавить донаты какие то и будет чаще)

  • @natanrock9301
    @natanrock9301 4 роки тому +2

    Спасибо!

  • @br_ann
    @br_ann 3 роки тому

    Спасибо!)

  • @Deestylovmusic
    @Deestylovmusic 3 роки тому

    Круто, спасибо

  • @ВикторАстахов-с6я
    @ВикторАстахов-с6я 5 років тому +4

    Годно. Не останавливайся!

    • @jsacademy772
      @jsacademy772  5 років тому

      Виктор Астахов спасибо, уже готовлю следующее 😉

  • @СергейКривенко-о1в
    @СергейКривенко-о1в 4 роки тому +10

    все супер, но отжимания это push ups, а wring out это выжимать)

    • @EvilYou
      @EvilYou 3 роки тому

      может, он жим лежа делает в зале :)

  • @diamaxel
    @diamaxel 3 роки тому

    хороший видос

  • @micknode9138
    @micknode9138 5 років тому +11

    Даешь async-await туториал!

    • @jsacademy772
      @jsacademy772  5 років тому +2

      Async/await будет следующим :)

    • @kalmanbraz7696
      @kalmanbraz7696 4 роки тому

      @@jsacademy772 вы же уже рассмотрели async await в этом видео

    • @jsacademy772
      @jsacademy772  4 роки тому

      @@kalmanbraz7696 на самом деле, в видео не хватает более сложных ситуаций использования Async/Await. Например, когда нам нужно выполнить 3-4 запроса на разные сервера, где очередность важна. Или получить данные по 1000 пользователям из стороннего апи в ограничениями на кол-во запросов от одного клиента (или кол-во запросов в секунду). Тут бывает полезно применять циклы или методы из встроенного Promises API, которые в видео не были рассмотрены, вот об этом и речь :)

    • @kalmanbraz7696
      @kalmanbraz7696 4 роки тому

      @@jsacademy772 тогда было бы неплохо сделать видео, чето трудно мне эта тема дается)

    • @alexsmith526
      @alexsmith526 3 роки тому +1

      @@jsacademy772 лол, ну и где?

  • @Fodintsov
    @Fodintsov 3 роки тому

    2:19 В функцию без параметров (wringOut) передаем параметр. Как так?

    • @jsacademy772
      @jsacademy772  3 роки тому

      Это пример использования на видео, для того, чтобы не усложнять восприятие опущены детали реализации функции. Но есть способ через псевдомассив arguments это сделать, можем пофантазировать что внутри тела функции (...) используется именно он 🙂🙃

  • @yuriiserdiuk3918
    @yuriiserdiuk3918 5 років тому +3

    Хорошее видео , все понравилось )) запущу бота , путь заслуженно пролайкает тебя в инстаграме . лайк и подписка +

    • @jsacademy772
      @jsacademy772  5 років тому

      енди уорхл спасибо!)

  • @Vladikslavik
    @Vladikslavik 3 роки тому +1

    Push-ups, а не wringouts. Второе - это отжимать в смысле отжимать бельё, платок или тряпку.

  • @ЭзизК
    @ЭзизК 3 роки тому

    спасибо большое

  • @stevenson5402
    @stevenson5402 4 роки тому

    лучший

  • @jorgenUA
    @jorgenUA 4 роки тому +1

    хорошо объяснил

  • @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 указано), таким образом можно обработать ошибку даже в двух местах

  • @АйПад-Два
    @АйПад-Два 4 роки тому

    Зачем запятая на 9:35 перед умножением времени на количество ?Без нее не работает,не могу понять какую функцию она выполняет

    • @jsacademy772
      @jsacademy772  4 роки тому

      Эта запятая перед вторым аргументом в функции setTimeout. Первый аргумент это функция-коллбек, а второй - когда эта функция должна сработать

    • @АйПад-Два
      @АйПад-Два 4 роки тому

      @@jsacademy772 спасибо

  • @АлександрБондаренко-к4м

    в начале видео неправильный синтаксис идет (если конечно это не псевдокод):
    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  4 роки тому

      На слайдах нет синтаксических ошибок, я в видео делал акцент на том, что троеточие - это реализация функции, которая будет рассмотрена позже)
      По async/await возможно и правда стоит записать отдельное видео чтобы разъяснить где их лучше/удобнее использовать, однако они все-равно являются синтаксическим сахаром, потому как можно писать и через then, так и через async/await. Второй вариант выглядит просто гораздо аккуратнее, короче и легче воспринимается, но работает все-равно аналогично цепочке промисов 🤷‍♂️

  • @gunners9566
    @gunners9566 4 роки тому

    Отличный ролик, все так понятно объясниил. Это не официальную документацию читать по несколько раз и в итоге ничего не понимать

  • @iMarkusUS
    @iMarkusUS Рік тому

    Иии примерно через 5 секунд ... пишу код и сам не верю )

  • @ntvisigoth
    @ntvisigoth 4 роки тому

    Не надо было пояснять про Promise и async\await вместе. Слишком много упускается вещей!
    Недостаточно раскрыто вот что:
    1. Что является вторым аргументом в then ? и как это связано с catch?
    2. Что если асинхронная функция не возвращает промиса, что делать? И причем тут Promisify ?
    Много чего можно было добавить. Просто не нужно мешать разные темы. Разве что потом, когда уже одно и второе пояснил сделать обобщенную про то как async\await сокращает код

    • @jsacademy772
      @jsacademy772  4 роки тому +1

      По первому не расскрыл, потому, что я считаю второй аргумент в then бесполезным и неэффективным. А второй пункт я вообще не понял) Асинхронная функция всегда возвращает промис, и, действительно, при чем тут Promisify?
      Я не включил в видео много нюансов, для того, чтобы упростить понимание промисов. Если записывать видео про всё что есть по этой теме, это будет несколько часов, да и думаю таких видео в интернете навалом)
      Целью этого видео не было дать полную информацию о всех возможных вариантах работы с промисами, а дать знания, которые используются на практике в 95% случаев. Видео расчитано на людей, начинающих знакомство с джаваскриптом, у которых трудности с пониманием как работают промисы.

    • @ntvisigoth
      @ntvisigoth 4 роки тому +1

      @@jsacademy772 Спасибо за старания! Они видны. Но все-таки надо ольше именно было раскрыть про второй параметр. Ведь приходя на работу человек сталкивается с Legacy-кодом, т.е. с тем что уже написано. Одно дело знать Best practices и др. им следовать. Не всегда есть возможность следовать. Более того даже читая код надо знать что он делает, чтоб корректно переписать на best practices .
      А так да, все супер! ;)

    • @jsacademy772
      @jsacademy772  4 роки тому

      Спасибо)