No video

TDD в JavaScript. Создаем свой класс Promise

  Рет қаралды 39,523

Владилен Минин

Владилен Минин

Күн бұрын

Получить профессию Frontend разработчика -
bit.ly/3R74R1g
Подробнее узнать об обучении в Result School -
bit.ly/3bCpF0g
Бесплатный курс HTML & CSS - bit.ly/3QYTTuo
Сделать 5 проектов на JavaScript - bit.ly/3I30vDX
Я в соц сетях:
Telegram: t.me/js_by_vla...
VK: vladile...
Instagram: / vladilen.minin
Мои паблики по JavaScript:
Telegram: t.me/result_sc...
VK: result....
Instagram: / result.scho. .
JavaScript cообщества:
Discord: / discord
Telegram: t.me/js_by_vla...
Roadmap по каналу:
vladilen.notio...
TDD (Test-Driven Development) на примере создания своего класса Promise с Jest
Перед просмотром роликом рекомендую ознакомиться с:
Node: • Node JS - Быстрый Курс...
Promise: • Урок 5. JavaScript. Pr...
Jest: • Jest. Unit Тестировани...
Async/Await: • Урок 8. JavaScript. Ка...
Call/Bind/Apply: • Урок 2. JavaScript. Чт...
Исходный код в телеграм канале:
t.me/js_by_vla...
#promise #tdd #javascript

Пікірлер: 174
@VladilenMinin
@VladilenMinin 4 жыл бұрын
Какие еще подобные темы разобрать? Пиши в комментариях
@ilnurryazhapov
@ilnurryazhapov 4 жыл бұрын
Universal
@kostiantynzhuravko94
@kostiantynzhuravko94 4 жыл бұрын
RegExp
@VladimirHoncharuk
@VladimirHoncharuk 4 жыл бұрын
Docker
@sevenpages7068
@sevenpages7068 4 жыл бұрын
Акторы, Akka.js
@Heretic_Man
@Heretic_Man 4 жыл бұрын
Квантовую механику
@valvetigu5207
@valvetigu5207 2 жыл бұрын
Полностью понятно мне только про 42)
@aleksandr1277
@aleksandr1277 3 жыл бұрын
Лайк поставил. Хорошая тема.
@al3xrz
@al3xrz 4 жыл бұрын
Спасибо, как всегда замечательно! Было бы интересно разобрать потоки в JS (streams, pipes)
@vladosononame6376
@vladosononame6376 3 жыл бұрын
Лайк не глядя)
@entrey_ua
@entrey_ua 4 жыл бұрын
Круто. Про тесты было очень познавательно. Спасибо.
@kombuchamp
@kombuchamp 4 жыл бұрын
Хотелось бы услышать что-то на тему подхода к тестированию фронтенда и spa в целом. Когда прибегать к юнит-тестам, когда - к е2е тестам. Стоит ли тестировать компоненты, например, в реакте с помощью специальных библиотек (enzyme, react testing library), если да, то какую логику стоит тестировать, какую нет. Или, может быть, вообще отказаться от тестирования интерфейса с помощью юнит-тестов, использовать для этого только е2е тесты, а юнит-тестами покрывать только бизнес-логику. О чем Ваш опыт говорит, какие подходы применяются на практике
@replicant9611
@replicant9611 4 жыл бұрын
TDD отличная тема, спасибо. Можно ещё больше TDD
@Fovaxus
@Fovaxus 2 жыл бұрын
Большое спасибо за урок! Я не очень хорошо понимал промисы, теперь намного лучше стал понимать, как это работает.
@zurkevich
@zurkevich 4 жыл бұрын
Владилен, справедливость ради, стоит отметить, что данный пример лишь интерфейсом напоминает промисы, кроме того он полностью синхронный.
@vadimalekseev3621
@vadimalekseev3621 4 жыл бұрын
Этот пример вообще работает с синхронным кодом? Я не тестил, но по виду, если сделать callback без асинхронных операций, то catch/finally/then будут проигнорированы, потому что callback выполнится быстрее, чем обработчики будут заданы. А ещё в его примере, кажется, не будет работать чейнинг для catch /finally, потому что переменная errorHandler будет перезаписываться на каждый catch. В итоге будет вызван последний успевший обработчик (тоже самое с finally)
@vadimalekseev3621
@vadimalekseev3621 4 жыл бұрын
@@user-vu6hn4ul2i почему асинхронный? В примере существует асинхронность только из-за setTimeout, но все что писал Владилен - синхронный код
@zurkevich
@zurkevich 4 жыл бұрын
@@user-vu6hn4ul2i в реальных промисах все функции выполняются асинхронно даже если таковыми не являются, они ставятся в специальную очередь "microtask queue". В примере Владилена для обычных функций весь код выполнится последовательно.
@vadimalekseev3621
@vadimalekseev3621 4 жыл бұрын
@@user-vu6hn4ul2i Со всем что Вы сказали согласен. Так почему "Нет, он асинхронный."?
@arturseu
@arturseu 3 жыл бұрын
@@vadimalekseev3621 я тестил. Не работает. И чейнинг тоже. Тут очень много недоработок. Пришлось самому после ролика написать свой promise чтобы понимать.
@user-tx7uv9gl4f
@user-tx7uv9gl4f 2 жыл бұрын
Владилен, спасибо огромное! Все видео на канале нереально полезны мне!
@ezizkurbannazarov5680
@ezizkurbannazarov5680 4 жыл бұрын
Супер полезный ролик, не потому что про тдд , а потому что раскрывает мощь JavaScript. Респект Владилену!
@alexmorgan1030
@alexmorgan1030 4 жыл бұрын
Хотел бы добавить, что можно еще с jest поработать. В доке разделы "TimerMocks" и "As Async Example", очень удобно!
@MascleGinger
@MascleGinger 3 жыл бұрын
в доках тоже число 42 фигурирует.
@zerocool14pvo
@zerocool14pvo 4 жыл бұрын
Как всегда отлично!
@maximminchenko7633
@maximminchenko7633 4 жыл бұрын
Владиленыч, было бы круто рассказать о Service Worker и Docker
@adaltezze
@adaltezze 4 жыл бұрын
SW хорогая идея для ролика. Хотелось бы посмотреть на кэщирование и оффлай реализацию через SW
@Cindorqw
@Cindorqw 3 жыл бұрын
тебя услышали
@LogopedLTD
@LogopedLTD 4 жыл бұрын
Владилен, привет! Можно ли разобрать глубже тему тестирования react - jest + enzyme, типо как тестировать с моками файлов со стилями, запросами на сервер
@alexlil6212
@alexlil6212 4 жыл бұрын
Да очень хотелось бы. И еще можно добавить тесты redux, action, reducer и тестирование AJAX axios с помощью moxios. И желательно на TS.
@AndrewOBannon
@AndrewOBannon 4 жыл бұрын
глубже - только за деньги
@sergeys4732
@sergeys4732 3 жыл бұрын
@@alexlil6212 а доку покурить не?) Медиум почитать, sof?)
@alexlil6212
@alexlil6212 3 жыл бұрын
@@sergeys4732 Комент 11 месяцев назад был написан. Что - то ты опоздал с коментарием. Уже покурил))
@user-ox4yl6gu3u
@user-ox4yl6gu3u 2 жыл бұрын
Enzyme сдох
@007mcvan
@007mcvan 4 жыл бұрын
Спасибо за видео. Вопрос такой: зачем в конструкторе мы используем call? Мы же могли вызвать просто с аргументами( методами класса). А так же использовать arrow функции чтобы не юзать bind
@puzzle2012
@puzzle2012 Жыл бұрын
Восторженных коментов написали много, а по делу почти ничего. Встретив ваш комент, попробовал изменить вызов, убрав call. Работает так же. Тоже не понял, зачем он там нужен. Ещё один недочёт - у метода then() должно быть два аргумента. Понятно, что второй почти никогда не используется и без него нормально работает. Но было бы здорово его прописать в этом методе.
@puzzle2012
@puzzle2012 Жыл бұрын
Нашёл ещё одну ошибку в работе VladilenPromise. У него метод then складывает коллбеки в очередь и при выполнении они по цепочке передают данные друг другу. Но если у нативного промиса вызвать несколько раз метод .then не цепочкой, а отдельно (вот так: promise.then(callback); promise.then(callback); promise.then(callback); ) - тогда коллбеки не будут передавать данные друг другу. Они все получат одно и то же значение из "resolve". У промиса Владлена это не так. У него всегда данные передаются по цепочке не зависимо от того каким образом коллбеки попали в очередь.
@AtlantZ
@AtlantZ 2 жыл бұрын
Нашёл) Спасибо за ролик! Уникально, доходчиво, полезно)
@mishagarkach
@mishagarkach 2 жыл бұрын
data = callback(data) вот это не понятно, что за магия : ) Если правильно понял, то data возвращается значение из callback и следующий callback вызывается с уже измененной data. В общем какой-то сокращенный синтаксис получается
@dmitrybezly8255
@dmitrybezly8255 4 жыл бұрын
Тема для разбора: Разработка архитектуры и выбор технологий
@eq656
@eq656 4 жыл бұрын
+
@webunit
@webunit 4 жыл бұрын
++
@anazkomult
@anazkomult 4 жыл бұрын
+++
@hutoryanin
@hutoryanin 3 жыл бұрын
Куда это самолёты и вертолёты собрались?!
@eamarc
@eamarc 4 жыл бұрын
Владилен, а можешь мини-гайд по вебшторму? Чтоб также ссылаться на него в следующих курсах и не отвлекаться/извиняться за его использование))
@romavizitiu3436
@romavizitiu3436 4 жыл бұрын
Давай нам - gRPC docker kubernetes
@artemviliutich8801
@artemviliutich8801 4 жыл бұрын
Это единственный канал где может появиться такой хардкор. Ждем!!!
@2009Spread
@2009Spread 3 жыл бұрын
Запили BDD + Cucumber
@KlinovAS
@KlinovAS 3 жыл бұрын
Промисы никак не помогают и не облегчают. Все что они делают - переупаковка и перемещения кода из внутри блока до после блока. Но это не решает проблему, если нужно обработать срабатывания события и срабатывания ошибки. Будет розростатся все то же лахматое дерево. И никакой пользы от промис. Польза есть, если у нас не будет обрабатываться ошибка. Вот вам пример, а то вы все играетесь в детские игрушки "Хело Ворлд"... Итак задача. Будем перебрасывать фотки из одного сервера на третий с помощю другого с целью разрузить платный сервер и не выходить за квоты. 1. Получить из базы данных MySQL запись row записи, в которой поле "отмечено=0" (асинхронно) 2. Достать из row список url на фотографии, которые нужно перенести на другой сервер (синхронно) 3. Работаем с одной фотографией 3.1. Download по URL. Качаем из сервера №1 на комп№2. На №2 же и запущена программа (синхронно) 3.2. Проверяем по FTP существования папки н компе №3. Если папки нет - создать. (асинхронно + рекурсия) 3.3. UPLOAD файла на комп3 по ftp (асинхронно) 4. Update row в mysql таблице set replace(старое значение на новое) 5. Если все фотографии перенесены, тогда поле "отмечено=1" Цыкл Вроде бы не много, но: 1. NodeJS никому не советую для даже средних проектов. Это недоязык! Вы убедитесь в этом, когда попробуете сделать не ХелоВорлд 2. Подключаемым require из npm (git) нельзя верить и опиратся как на фундамент. Очень жосткие косяки и баги есть и в MySQL и FTP и в JSON парсера и даже при обычной загрузке информации по типу GET черз request. 3. Даже соблюдая все правила асинхронности приложения может по безпределу остановиться. Например с MySQL был такой прикол, что после остановки приложение не может запустится, а если подождать 20-30 секунд, снова обработает несколько sql запросов и снова повиснет. Я не нашел этому никакого обяснения. Эфект паравозика собый типа аля Промис лично я делаю через таймер. Для этого создаю переменную, которая помнит режим куда нам можно войти. Дальше включается таймер и запускается одна функция, в которой есть набор правил: если режим==1 делаем 1, меняем на режим 2 , уходим если режим==2 делаем 2, меняем на режим 3, уходим Такая логика будет работать везде отлично, даже на Ардуино
@magomedmakhmudov2945
@magomedmakhmudov2945 3 жыл бұрын
если resolve не обернут в setTimeout (тобишь нет задержки) то then промиса отрабатывать не будут, А у базового класса промис он будет отрабатывать. Как работает этот механизм?
@QwiniTRON
@QwiniTRON 4 жыл бұрын
Привет! Отличное видео! •Сними ролик на тему pwa + WorkBox•
@romandeveloper7720
@romandeveloper7720 2 жыл бұрын
Все идеально, но вот если сразу вызвать resolve в Promise, то у вас не сработает, queue будет пустой
@djorji7114
@djorji7114 3 ай бұрын
Я прокинул тело resolve в queuMicrotask, вроде заработало
@ksenyaD
@ksenyaD 4 жыл бұрын
Да огонь спасибо ! Как раз нужно )
@MrStoikiy
@MrStoikiy 4 жыл бұрын
Написание тестов разных вариантов хотелось бы увидеть. Используя саги и другие методы.
@artedza
@artedza 4 жыл бұрын
Класс! Спасибо за TDD!) Тестирование фронтенда зашло бы хорошо) Что и как нужно тестировать, а что можно пропустить и не покрывать тестами
@user-yw5xf4cx2v
@user-yw5xf4cx2v 4 жыл бұрын
Круто было бы увидеть уроки по Service Worker)
@ildarbagamanshin867
@ildarbagamanshin867 4 жыл бұрын
test('should get data in then block and chain them', async () => { const result = await promise.then(num => num).then(num => num * 2)
@ra44o
@ra44o 4 жыл бұрын
он ждет выполнения этого промиса, а не идет дальше по коду. если оставить без async/await, то тест не пройдет, так как все эти преобразования в then будут выполняться, когда очистится очередь
@ildarbagamanshin867
@ildarbagamanshin867 4 жыл бұрын
​@@ra44o в нашем случае после await идет обычный объект, а не нативный промис... Что удивительного мне удалось обнаружить -- если просто написать const result = await promise; то await неявно вызовет метод then у promise. И запишет в this.queue какую-то функцию ( дебаг не отображает ее код). Загадка.
@tyafizi
@tyafizi 3 жыл бұрын
узнал?
@tyafizi
@tyafizi 3 жыл бұрын
а, всё. нашел ответ здесь stackoverflow.com/a/55263084/12888682
@supitacantora413
@supitacantora413 4 жыл бұрын
Если можно осветите тему MVC и FLUX архитектур.
@11r3start11
@11r3start11 4 жыл бұрын
Владилен, ты классный спец, рад у тебя учиться! Но меня беспокоит то, как ты работаешь с критикой. Пожалуйста, будь более вежлив к аудитории. Мне не приятны моменты когда на вопрос «когда выйдет видео Х» ты отвечаешь «может вы мне денег заплатили чтоб оно вышло?». Или когда говоришь «не понимаю смысл дизлайкать бесплатный контент». Ты получаешь доход с курсов, рекламы, интеграций с брендами и розыгрышей. И в первую очередь благодаря «бесплатному» ютубу твой доход растёт. Я понимаю что хейтеры будут всегда и на откровенный хейт реагировать не стоит, но вот на критику без эмоций и по делу - реагируй пожалуйста более вежливо.
@VladilenMinin
@VladilenMinin 4 жыл бұрын
Все очень просто - поработаешь полтора года, как я тут и в таком же объёме и поймёшь мотивацию и отсутствие порой вежливости Именно к объективной критике я всегда прислушиваюсь и исправляю, если есть что Плюс это мое дело, как себя вести. Не стоит указывать что и как мне делать. То с чего я зарабатываю и какую модель выбирать я и сам прекрасно знаю
@user-xf7hj7ll6r
@user-xf7hj7ll6r 4 жыл бұрын
Как всегда полезный контент, спасибо! Интересно было бы послушать лекции о css и вёрстке, так как порой при разработке возникают очень странные моменты)
@reuvenyanturin2526
@reuvenyanturin2526 4 жыл бұрын
Искусственный интеллект, машинное обучение
@maxchernyshov8405
@maxchernyshov8405 4 жыл бұрын
бро не на тот канал попал
@vadimalekseev3621
@vadimalekseev3621 4 жыл бұрын
Владилен, сделай возможность запускать синхронный код и нормальную обработку catch/finally, потому что чейнинг для них не будет работать
@daniilrozyev
@daniilrozyev 2 жыл бұрын
Объясните что происходит с data в onResolve? Мы её переопределяем когда вызываем callback, а как она потом оказывается в следующем then?
@user-lz5oc7nu5e
@user-lz5oc7nu5e 4 жыл бұрын
Крутая подача) Хотел бы увидеть контент по mobx и react.
@VladilenMinin
@VladilenMinin 4 жыл бұрын
По реакт полно контента на канале
@user-lz5oc7nu5e
@user-lz5oc7nu5e 4 жыл бұрын
@@VladilenMinin Да, но я имел в виду mobx + react )
@hutoryanin
@hutoryanin 3 жыл бұрын
*Л. а. й. к.*
@kvg74
@kvg74 4 жыл бұрын
Класс. Интересны также js кишочки ангуларовских интерсепторов. Спасибо
@macsik12
@macsik12 2 жыл бұрын
А как же возвращение промиса в методе then, что бы сам метод then этот промис возвращал, а не this.
@aske34ru
@aske34ru 4 жыл бұрын
Сделай подобное видео про реализацию базового функционала какого нибудь реактивного фреймворка)
@VladilenMinin
@VladilenMinin 4 жыл бұрын
Такой контент в курсе в описании
@whatswrongwithyou9032
@whatswrongwithyou9032 3 жыл бұрын
Было бы круто если бы ты рассказал про addEventListener
@rezyadlf
@rezyadlf 4 жыл бұрын
Вы некорректно реализовали Промис. Вы дали общее понимание, но ваш код неверный. В случае когда реджектите добавьте еще один блок .then после .catch чтобы проверить ваш собственный Промис. Новый then не выполнится. А должен
@rezyadlf
@rezyadlf 4 жыл бұрын
Если вы продаете курс по джсу, то такие нюансы уж вы точно должны рассказывать.
@VladilenMinin
@VladilenMinin 4 жыл бұрын
Ты видео смотри внимательней, и комментарии слушай к видео и не будет таких вопросов Тема ролика - TDD
@user-lh9xq2xs3x
@user-lh9xq2xs3x 3 жыл бұрын
делал все по видео и при запуске тестов получал ошибку "encountered a declaration exception › regeneratorRuntime is not defined" . Что бы исправить - В файле promise.test.js надо добавить вверху строчку import 'regenerator-runtime/runtime' оставлю тут инфу, может кому то сэкономит время ...
@Kalinkin88
@Kalinkin88 4 жыл бұрын
В топ 👍
@user-yd7db3wd7w
@user-yd7db3wd7w 4 жыл бұрын
Может кто-то объяснить, почему после promise.then(data => data).then(data => data * 2) мы получаем n = n*2? Мы же вызываем executor тольо один раз при создании класса. Я это вижу так: мы создаем класс, executor вызываеться с функциями, которые уже в нашем que, а последующими then мы только добавляем в очередь, но не вызываем executor с новоприбывшеми функциями. Мог ли бы кто-то объяснить, что я упускаю?
@kaba4ok81
@kaba4ok81 3 жыл бұрын
В его примере использования собственного promise есть setTimeout. В нем то и весь фокус. Если его убрать, очередь then-ов будет пустой.
@vladplaz
@vladplaz 4 жыл бұрын
Тема поддержания здоровья в айти актуальна как никогда)
@user-pe8el6tb7n
@user-pe8el6tb7n 4 жыл бұрын
Кому интересно, как сделать капчу на стороне клиента с помощью JS, поставьте лайк.
@Prikyp
@Prikyp Жыл бұрын
Вроде кое-как понял и разобрался в теме, но по мне это было скучно и запутанно. Местами совсем не простым языком и без понимания того, что будет сложно схватить новичку. Другие твои уроки заходили куда лучше. В любом случае огромное спасибо за труд.
@dmsun859
@dmsun859 4 жыл бұрын
Круть!!!
@ilnurryazhapov
@ilnurryazhapov 4 жыл бұрын
11:00 намек поняли)
@user-qb1dn5lh9j
@user-qb1dn5lh9j 4 жыл бұрын
Псс, было бы неплохо запилить видос по GraphQL)
@VladilenMinin
@VladilenMinin 4 жыл бұрын
Будет)
@adaltezze
@adaltezze 4 жыл бұрын
Если в `executor` передать плоскую (синхронную) функцию, то весь `Promise` отработает синхронно; Если из `then` вернуть `Promise`, то следующий по цепочки `then` должен дождаться ответа
@VladilenMinin
@VladilenMinin 4 жыл бұрын
Это уже на самостоятельную реализацию
@admenmod
@admenmod 4 жыл бұрын
@@VladilenMinin так это и есть самая сложная часть
@admenmod
@admenmod 4 жыл бұрын
@@user-vu6hn4ul2i какую же магию? Я могу себе представить реализацию только через await?) И да then возвращает не this, а новый Promise. Это же, больше похоже на то, что Promise записывается в переменную. И у переменной уже вызывается метод then. То есть это не цепочка)
@alik6580
@alik6580 4 жыл бұрын
@@admenmod попробуйте через генераторы
@davidkroods811
@davidkroods811 4 жыл бұрын
Ну я конечно не гуру но нашёл ошибку Например const delay = (ms) => new Promise((resolve, reject) => { setTimeout(() => resolve(), ms); }); delay(2000).then(() => fetch("jsonplaceholder.typicode.com/users")).then(response => response.json()).then(json => console.log(json)); В нативке и в самодельной есть ошибка
@spyinfooo
@spyinfooo 4 жыл бұрын
Будет ли Gatsby.js?
@user-px5gv2gi6y
@user-px5gv2gi6y 4 жыл бұрын
ssr, архитектура в node.js (express) приложении
@ardakrakhmetov4653
@ardakrakhmetov4653 3 жыл бұрын
на 2:50 при npm init -y уже выходит ошибка, помогите что делать?
@VladilenMinin
@VladilenMinin 3 жыл бұрын
Установи ноду
@a_anciferoff
@a_anciferoff 4 жыл бұрын
Было бы хорошо разобрать некоторые встроенные модули из node.js (net, events, crypto).
@VladilenMinin
@VladilenMinin 4 жыл бұрын
На канале есть
@astrotrain
@astrotrain 4 жыл бұрын
Я ждун, жду заявленный докер. ((:
@supitacantora413
@supitacantora413 4 жыл бұрын
Дааа!!!! Вот єто контент на рост. Браво))
@nectarik
@nectarik 4 жыл бұрын
Привет, Владилен! Давно изучаю js и все его технологии, но как то мимо прошел типа Symbol, где его можно применять или если будет возможность, покажешь примеры с ним?)
@VladilenMinin
@VladilenMinin 4 жыл бұрын
Глянь курс по ES6 на канале. Там рассказывал
@Mike37373
@Mike37373 4 жыл бұрын
википидия
@entrey_ua
@entrey_ua 4 жыл бұрын
0:33 "статья на википедИи" О_о
@pandaskeptic2937
@pandaskeptic2937 4 жыл бұрын
2:22 Пиписать.)
@mukhammadrustambayev2051
@mukhammadrustambayev2051 4 жыл бұрын
React+jest+enzyme
@abathojalyk1625
@abathojalyk1625 4 жыл бұрын
Cool!
@user-yk4tk1vd6i
@user-yk4tk1vd6i 3 жыл бұрын
ничего не понял, но очень интересно :)
@user-td4yy8zt5u
@user-td4yy8zt5u 3 жыл бұрын
у-у-у-у википедИя
@user-nh1ku5xs5z
@user-nh1ku5xs5z 4 жыл бұрын
А почему нативный try catch finally не сработал? На 39:34
@deitylamb
@deitylamb 4 жыл бұрын
Найс.
@AB-fb1ve
@AB-fb1ve 4 жыл бұрын
Я думаю что тема ML/AI на JS была бы очень интересна, учитывая что контента толкового очень мало, а направление очень хайповое сейчас и внедряется везде где только можно)
@user-kg5sg6rx6e
@user-kg5sg6rx6e 4 жыл бұрын
Если я пишу на тайпскрипте и у меня есть интерфейсы и абстрактные классы, мне же не обязательно покрывать тестами наличие методов? И вообще, какие тесты можно пропустить, если работаешь с типизацией?
@untilted7086
@untilted7086 4 жыл бұрын
Как на счёт рекурсии?
@eq656
@eq656 4 жыл бұрын
А что там разбирать?
@user-gr6dw9jd1c
@user-gr6dw9jd1c 4 жыл бұрын
async await рулят ))
@user-nt8bx1kd3c
@user-nt8bx1kd3c 4 жыл бұрын
Я так и не понял почему finally пришлось добавлять в onResolve и onReject. В try о же должен выполняться всегда. Где я потерялся?
@alexsumatohin9687
@alexsumatohin9687 4 жыл бұрын
Потому что обработчики навешиваются при вызове then/catch/finally, а в момент вызова executor в конструкторе в них заглушки, которые ничего не возвращают. По этой же причине код из видео также не будет работать для синхронного executor.
@alexlmaxl4966
@alexlmaxl4966 4 жыл бұрын
Разбери: React + Gatsby.JS Поддержите лайком!
@user-yz6ng4kw4x
@user-yz6ng4kw4x 4 жыл бұрын
Я один удивися почему Владилен не показал главную страницу nodejs и не порекомендовал установить current версию ?
@VladilenMinin
@VladilenMinin 4 жыл бұрын
Кажется, все относительно разобрались с этим)
@ilyaponomarev9279
@ilyaponomarev9279 4 жыл бұрын
Это нормальная практика делать такие подробные тесты?
@adiks09
@adiks09 4 жыл бұрын
На практике они ещё подробные
@странствие
@странствие 4 жыл бұрын
Хм, а что еще осталось нереализованным (если полностью повторять оригинальный класс)?
@kolebynov
@kolebynov 4 жыл бұрын
Я вообще не джсник, но вроде как в нативном промисе можно в блоке then() вернуть новый промис и след then вызовется только после завершения нового промиса. Тут это точно не реализовано
@странствие
@странствие 4 жыл бұрын
@@kolebynov а что мешает? Также создается этот vladilenPromise, работает он нормально. Или ты имеешь ввиду, что .then() выполнится не дожидаясь выполнения промиса?
@user-yt9yu7mu5u
@user-yt9yu7mu5u 4 жыл бұрын
Я за разбор Kubernetes
@replicant9611
@replicant9611 4 жыл бұрын
Большой ДИЗЛАЙК за то, что выкладываешь исходный код в Телеграм-канале, а не на Гитхабе как все нормальные люди
@VladilenMinin
@VladilenMinin 4 жыл бұрын
Он в на гитхабе лежит
@replicant9611
@replicant9611 4 жыл бұрын
@@VladilenMinin Значит надо ссылку на Гитхаб давать и не морочить людям голову
@ilyaponomarev9279
@ilyaponomarev9279 4 жыл бұрын
Зачем делать executor.call(), если можно сделать просто executor() может кто объяснить?
@admenmod
@admenmod 4 жыл бұрын
Чтобы внутри executer'а this был null
@007mcvan
@007mcvan 4 жыл бұрын
Мне тоже этот момент интересен)
@007mcvan
@007mcvan 4 жыл бұрын
admenmod ZXCV зачем, контекст мы не привязываем)) для выполнения)
@user-zk4wz7io6j
@user-zk4wz7io6j 4 жыл бұрын
может просто говорим для себя, что нет такого места где контекст понадобится...?
@ReAgent003
@ReAgent003 4 жыл бұрын
Привет, Владилен! Ты показываешь примеры с конструкторами, но, если не сложно, давай еще попрактикуемся пожалуйста... Сними видео как решать например эту задачку, очень прошу: www.codewars.com/kata/5571d9fc11526780a000011a Спасибо.
@liperri
@liperri 4 жыл бұрын
Правильно википедия, а не википедия
@Prikyp
@Prikyp Жыл бұрын
Во время просмотра читал вот это - learn.javascript.ru/promise-basics и было на много понятнее
How To Optimise Your Linkedin Profile And Get Warm Leads
9:59
Titas Bielskis
Рет қаралды 71
Or is Harriet Quinn good? #cosplay#joker #Harriet Quinn
00:20
佐助与鸣人
Рет қаралды 14 МЛН
Parenting hacks and gadgets against mosquitoes 🦟👶
00:21
Let's GLOW!
Рет қаралды 13 МЛН
managed to catch #tiktok
00:16
Анастасия Тарасова
Рет қаралды 48 МЛН
Уроки JavaScript с Нуля - Методы объектов в языке JS #14
28:26
IT-Свободный Программист
Рет қаралды 137
Java с нуля / #26 Super
13:13
Evgeny Orashkov
Рет қаралды 71
Or is Harriet Quinn good? #cosplay#joker #Harriet Quinn
00:20
佐助与鸣人
Рет қаралды 14 МЛН