Разбор Promise и создание собственной имплементации MyPromise | JavaScript

Поделиться
HTML-код
  • Опубликовано: 15 ноя 2024

Комментарии • 92

  • @gaengedev2583
    @gaengedev2583 4 месяца назад

    Your RUclips videos are so incredibly good that I can divide my life as a JavaScript developer into before and after discovering them !!!

  • @maxet2374
    @maxet2374 3 года назад +14

    Елена - много раз просил и поэтому ОГРОМЕННОЕ спасибо. Годных видео по этой теме для и понятных для новичков оч мало. Елена ты красотка и крутая

    • @webelart
      @webelart  3 года назад +1

      ❤️❤️❤️

  • @sirlion1549
    @sirlion1549 Год назад +2

    Я не мог понять материал на learn.javascript по этой теме. И вообще не мог найти хорошее объяснение в других источниках.
    У меня просто перевернулось понимание промисов после этого урока, я нашёл ответы на вопросы с проваленых собесов)
    И вообще этот канал - клад, для джаваскриптизера)

  • @maratd1781
    @maratd1781 Год назад +1

    Спасибо! И полезно, и весело. Успехов на чужбине и соотечественников не забывайте.

  • @igormalykhin5528
    @igormalykhin5528 7 месяцев назад

    Елена большое спасибо Вам за материал. Продолжайте пжл в том же духе

  • @user-glory-of-ukraine
    @user-glory-of-ukraine 2 года назад +3

    Автор обаятельная девушка с прекрасным чувством юмора) Смотрю с открытым ртом и из-за хорошего материала и из-за милого учителя)) СПС вам за классный комплекс: знаний и няшностей!!)

    • @webelart
      @webelart  2 года назад

      Спасибо огромное! Очень приятно! ❤️

  • @kelenella_
    @kelenella_ 3 года назад +1

    Спасибо за видео, реально нужно было с кем-то сесть и ещё раз прописать как это работает

    • @kelenella_
      @kelenella_ 3 года назад +2

      А кому скроллы не нравятся на 17й минуте, так это же не стрим) возьми отмотай, пересмотри, замедли, ну серьёзно

  • @vladimirglazkov7960
    @vladimirglazkov7960 2 года назад

    это же какое-то великолепное великолепие...

  • @Brinzovik
    @Brinzovik 3 года назад

    Спасибо!! Очень интересное видео!
    Promise. Custom promise. Js. Промис, кастомный промис, как работает промис. Проммис, промисс

  • @helengriva3016
    @helengriva3016 2 года назад +3

    Елена, огромное Вам спасибо! Стало намного понятнее, как работают промисы! 👍👏😍

  • @alexivanov6459
    @alexivanov6459 3 года назад +2

    Чтож, под прошлым видео писал, что на собеседовании сказали: «мы вам перезвоним», сейчас напишу, что взяли в другую компанию на оплачиваемую стажировку пилить их crm-ку, растём!
    А тебе удачи во всех начинаниях, классный и очень понятный формат подачи.

    • @webelart
      @webelart  3 года назад

      😍 Поздравляю вас с найденной работой и новым жизненным этапом!
      Спасибо большое за пожелание успеха, мне очень приятно! ❤️

  • @vladislav-qn9nr
    @vladislav-qn9nr Год назад +1

    Просто шикарное видео и подача, после прочтения статьи на learnjs вроде бы все понятно, но поверхностно, хотелось как раз подробно узнать что и куда и откуда идет, и после того как сам сел разбираться и ничего не получалось, наткнулся на ваше видео с подробными объяснениями как раз по внутреннему строению, огромное спасибо!

  • @МишаБобров-и1з
    @МишаБобров-и1з 2 года назад +1

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

  • @WebEnv
    @WebEnv 2 года назад +5

    Спасибо! Побольше бы таких имплементаций или поллифилов. А так видео просто 🔥

  • @theoty-js
    @theoty-js 2 года назад +2

    Ты настолько клёвая,что даже после траблов со звуком смогла заново записать урок

  • @STELLS541
    @STELLS541 Год назад

    Промисы - это наверное одна из самых своеобразных тем, которые могут спросить на собесе и на чем-то таком подловить.
    Сам вот хожу на собесы сейчас, на уровень миддл- и недавно вот подловили на промисах разок.

  • @СергейМустафаев-и2к
    @СергейМустафаев-и2к 2 года назад +1

    очень крутые видео у тебя прям ну очень, смотреть одно удовольствие очень интересно было никогда не задумывался как работает под капотом промис)

  • @Syberby
    @Syberby 2 года назад

    Ждем имплементацию SetTimeout)

  • @ЭльнараГайнанова-ф3к
    @ЭльнараГайнанова-ф3к 11 месяцев назад

    Не останавливайся! Твои видео лучшие 👏 Вдохновения тебе и успехов в карьере ❤

    • @webelart
      @webelart  9 месяцев назад

      Спасибо! ❤️❤️❤️

  • @sergeiverenikin3275
    @sergeiverenikin3275 3 года назад +3

    Супер, ждал очередного урока 😊

  • @alenache1
    @alenache1 Год назад

    на данный момент это лучший разбор Промисов в русском сегменте ютуба, Елена, респектище 👍👍👍

  • @aleksandrippatev1268
    @aleksandrippatev1268 2 года назад +1

    мне понравилось, удачи Елена!
    звучит очень доступно и прикольно)

  • @WashYourBack
    @WashYourBack 9 месяцев назад

    Я не понимаю. На 29:00. В then мы проверяем состояние, если оно pending - копим вызов самого метода then в массиве.
    Когда происходит resolve - он вызывает каждый отложенный then.
    Но это ведь к изначальному then уже не имеет отношения. Код выполняется уже не из строк 95:97.
    Хотелось бы побольше узнать что значит процесс накопления функций, и как они исполняются потом во время resolve.

  • @АлександрРоманов-р5ф

    посмотрел, послушал., хотя я Java изучаю) спасибо

  • @olegwinsen
    @olegwinsen Год назад

    Круто. Было очень полезно. Однозначно лайк и подписка.

  • @АлександрКрасавин-х8э

    Классное видео,но мне как новичку после прохождения базового курса js это стало еще более непонятным))) Скорее из-за неполного понимания классов)) Методы еще понятны,а вот эти resolve и reject принимают value или error,а токуда они их берут и т.д непонятно)

  • @Nikitosss91
    @Nikitosss91 2 года назад

    Нереально имбовый контент, спасибо, Елена.

  • @ОляГостева-с1и
    @ОляГостева-с1и Год назад

    Лена расскажите пожалуйста как поставить правильно пароль на жёсткий диск

  • @shavor1000
    @shavor1000 Год назад

    Красотка)

  • @dr.margulis7773
    @dr.margulis7773 3 года назад +1

    Спасибо, очень важная и полезная тема!

  • @romanmed9035
    @romanmed9035 2 года назад

    какой-то непорядок в ссылках на телеграмм. то что в видео отсутствует. по ссылке под видео правильная на этот момент. а само видео супер. если бы раньше посмотрел, прошел бы собеседование успешно.

  • @ГенаФес-ъ9з
    @ГенаФес-ъ9з 2 года назад

    супер! Сенкс!!!

  • @YuriiKratser
    @YuriiKratser 3 года назад

    Спасибо тебе!

  • @daniilrozyev
    @daniilrozyev 2 года назад

    Есть ли возможность как в Python смотреть как это всё написано внутри JavaScript, разработчиками языка?

  • @dodokwak
    @dodokwak Год назад

    Thx

  • @НиколайХаритонов-й3н

    Спасибо за урок, ты вообще супер.

  • @oleg_shulga
    @oleg_shulga 2 года назад

    Спасибо. Очень хорошее видео.

  • @afonyya8842
    @afonyya8842 Год назад

    4:52 очень важная ошибка! Функция которую принимает в себя конструктор Promise не является колбэком, а вот аргументы этой функции (resolve, reject) как раз таки предназначены для передачи колбэков.

    • @webelart
      @webelart  Год назад

      Никакой ошибки нет - developer.mozilla.org/en-US/docs/Glossary/Callback_function.

  • @alexsov
    @alexsov 2 года назад +1

    ваша имплементация (как и имплементация из первой ссылки в описании) не выполняет первое соглашение из mdn : "Callbacks added with then() will never be invoked before the completion of the current run of the JavaScript event loop."
    console.log(1)
    const p = new Promise((resolve, reject) => {
    console.log(2)
    resolve('done')
    })
    p.then(result => {
    console.log(4)
    })
    console.log(3)
    у вас будет выведено 1 2 4 3
    а должно быть 1 2 3 4

    • @Maxim9575
      @Maxim9575 2 года назад

      Полагаю не реализованы микрозадачи. Вообще не понимаю смысл реализации, если читая спецификацию можно понять, что некоторые проверки невозможно выполнить через js, что делает реализацию не релевантной и с дырами.

  • @episarev
    @episarev 2 года назад

    няшно

  • @egoist2956
    @egoist2956 3 года назад

    Лайк..!

  • @ДенисКац-э1ь
    @ДенисКац-э1ь 3 года назад

    на 20:32 вы снова выводите в консоль Promise, а не MyPromise, ну или я чего-то не понял

    • @webelart
      @webelart  3 года назад

      Да, очепятка 😐 Сделала скрин с этим тестом: monosnap.com/file/mVO6nGRjStldZRpyxQN7i8wOA9uxfF

    • @ДенисКац-э1ь
      @ДенисКац-э1ь 3 года назад

      @@webelart Спасибо, а то я уже не знал, что делать. Начал думать, что это всё обман, декорации, понимаете?

    • @webelart
      @webelart  3 года назад

      @@ДенисКац-э1ь Почему так подумали? По файлу просто забыла его сохранить и вывела предыдущий результат.🙂

    • @webelart
      @webelart  3 года назад

      @@ДенисКац-э1ь ❤️

  • @martDKNY
    @martDKNY 2 года назад

    А как сделать, чтобы работали 2 зена подряд then().then() ?
    И как положить константы PENDING, FULFILLED, REJECTED в промис ?

    • @webelart
      @webelart  2 года назад

      В текущем примере цепочки реализованы и константы тоже определены.

    • @martDKNY
      @martDKNY 2 года назад

      ​@@webelartЦепочки действительно реализованы. А что на счет констант, их никак не положить в класс? Ведь Promise не требует внешних констант для работы.

    • @webelart
      @webelart  2 года назад

      ​@@martDKNY Ммм, интересный вопрос. Промис, как и любая библиотека может реализовываться по разному. Обычно, когда происходит некоторое деление кода, это удобнее. Есть класс, есть какие-то отдельные хелперы (функции) и внешние переменные, в итоге всё импортируется как один пакет. Что-то скрыто, что-то торчит наружу. Можно посмотреть на реализацию промиса в npm (github.com/then/promise/tree/master/src). Здесь есть множество различных файлов, делений и переменных.
      Класть всё в один класс необходимости нет. Можно ли? Да можно положить, при этом нужно обязательно их сделать приватными, т.е. чтобы их извне достать было нельзя и как-то изменить.
      Здесь можно уточнить про внешние константы. В текущем оформлении они действительно внешние. Есть файл index.js, который никак не замкнут, в другом файле можно получить доступ к любым его переменным. Возможно это вызвало смущение. Один файл без различных наложений использовался для упрощения написания кода. В целом текущий пример был создан, чтобы посмотреть как всё выглядит изнутри. Но если брать этот код и встраивать в реальный проект, то лучше его оформить как модуль и импортировать конкретно класс Promise, всё остальное будет скрыто и переменные внешними не будут. Либо сделать замыкание с самовызывающейся функцией и через window добавлять глобальность к тем вещам, которые должны быть внешними (function () {... код проекта...window.MyPromise....} ()). В общем всё зависит от того как надо, чтобы было оформлено в конечном итоге :)

    • @martDKNY
      @martDKNY 2 года назад

      @@webelart Спасибо! У меня видимо путаница с основами. Но promise является и частью стандарта языка. И я запутался тут в связке прототип-инстанс-объявление. В любом случае мне нужно еще поразбираться. Еще раз спасибо. С наступающим!

  • @ЕвгенийБыков-г4ы
    @ЕвгенийБыков-г4ы 3 года назад

    then когда вы пишите в классе, - значит вы переопределяете его там?

    • @webelart
      @webelart  3 года назад +1

      Вы имеете ввиду, когда метод then в класс добавляю? Здесь скорее я определяю этот метод, т.е. класс MyPromise и настоящий Promise никак не соединяются, это два разных класса. В MyPromise я скорее описываю как примерно может выглядеть Promise внутри. И определяю собственные методы, такие как then и catch. Стало понятнее? Либо уточните вопрос.

    • @ЕвгенийБыков-г4ы
      @ЕвгенийБыков-г4ы 3 года назад

      @@webelart, я было подумал, что MyPromise наследует от настоящего Promise, надо ещё пересмотреть. Спасибо, полезное видео!

    • @webelart
      @webelart  3 года назад

      ​@@ЕвгенийБыков-г4ы нет, наследования нет. :)

  • @pirozhok1337
    @pirozhok1337 3 года назад

    эм...почему не try/catch?

  • @alexidino
    @alexidino 3 года назад +4

    Здравствуйте, Елена! Думал писать, не писать комментарий, решил написать. Я смог посмотреть только 22 мин, после 17й минуты смотрел с трудом. Объясню почему, если этот контент позиционируется как для новичков, то почему на мониторе какие то гонки, дикие скроллы и перескакивания по коду за доли секунды? Как новичок порекомендовал бы вам сбавить темп и меньше сбиваться, потому что когда чего то не понимаешь концентрируешься на всем и вещи типа - вот здесь вот так, а нет вот так, скролл, там подправили, здесь дописали и т.д (пересмотрите 17ю минуту, что там происходит) ). Я просто выразил мнение как начинающий, за контент спасибо, но пока отложу дальнейший просмотр этого урока.

    • @webelart
      @webelart  3 года назад +2

      Здравствуйте! Спасибо за комментарий! Здесь у меня идёт кодинг в реальном времени и поэтому думаю так получается. Плюс я в тесты не вынесла эти небольшие проверки, возможно если разделить на файлы было бы более удобно :)
      Но в любом случае думаю, когда я риал код пишу, то здесь настолько всё интуитивно, что такие вещи сложно контролировать.
      Думаю, чтобы лучше в целом осознать видео, т.к. я здесь имплементацию рассказываю (а это уже левел хороший), поэтому если вы новичок, то лучше предварительно немного ознакомиться с темой промисов, например на том же learn.javascript.ru/promise-basics, потыкаться, попробовать. И возвращайтесь к видео. Такие темы очень круто глубже разбирать, даже если всё с первого раза не понятно.❤️

    • @alexidino
      @alexidino 3 года назад

      @@webelart ок, спасибо, позже вернусь.

    • @Brinzovik
      @Brinzovik 3 года назад

      Видео очень крутое, но я бы тоже не понял, если бы ещё их не использовал. Обязательно посмотри его чуть позже для закрепления! Повторюсь: видео очень стоящее на мой взгляд

    • @martDKNY
      @martDKNY 2 года назад

      Да, видео очень крутое. Когда допиливается then с promise вер. можно сократить

    • @ЧеловексТопором
      @ЧеловексТопором 2 года назад +2

      Думаю ответ прост. Автор не является педагогом, а значит доносит мысли как получается. Все приходит с опытом товарищ )

  • @steur777
    @steur777 2 года назад

    4 минута... ну давай уже начнём промисы

    • @webelart
      @webelart  2 года назад

      😁😁😁😁

  • @мишабасманов
    @мишабасманов 2 года назад

    Дир , Елена ! Залейте пжлста свои видео в российский чебурнет . Нам скоро отключат Ютуб !

  • @АндрейФролов-е6щ

    Три минуты послушал и выключил, одна трепотня...

    • @webelart
      @webelart  Год назад +1

      Растите, возможно в будущем дорастёте до уровня, что сможете слушать и понимать мои видео.

    • @АндрейФролов-е6щ
      @АндрейФролов-е6щ Год назад

      @@webelart Возможно, вы хороший веб разработчик, но вы не смогли в первые минуты этого видео заинтересовать меня на продолжение его досмотра, одно бла-бла-бла, а значит у вас точно небольшой талант педагога. В самом начале вы сообщаете, что сами «плаваете» в этой теме, но хотите обучить других. Куда уж мне расти до ваших видео, в силу возраста у меня не так много времени, чтобы тратить его на «воду» в вашем введении. Когда мы начинали программировать в начале 90, мы разбирали DOS игрушки и программки и писали на Ассемблере свой код. У нас была всего одна книга великого Питера Абеля и не какого видео. Сейчас же каждый, кто научился забивать гвоздь, пусть криво и не до конца, считает, что может научить этому других. Ответ на свой вопрос уже нашел у другого автора, здесь же на Ютубе.

    • @webelart
      @webelart  Год назад

      @@АндрейФролов-е6щ Ну судя по комментам не смогла зацепить только вас. Так что давайте мы не будем диванным аналитиком продакшен контент. Не нравится, берём камеру и цепляем людей. То чем вы занимаетесь, называется хейтерство. И вам точно не на мой канал.

    • @webelart
      @webelart  Год назад

      Также замечу, что вам определённо нужно тренировать концентрацию. Три минуты это пожалуй полный провал. Как вас вообще в веб-разработку-то занесло?
      P.S. Вопрос риторический.

    • @АндрейФролов-е6щ
      @АндрейФролов-е6щ Год назад

      @@webelart крутнул коментарии вниз и самый последний от alexidino, он пишет, что продержался на этом видео 17 минут, чуть выше
      Kosta Derabin пишет: "4 минута... ну давай уже начнём промисы", он видимо до 4 мин. дотерпел... конечно с такой подачей канал в топку.