почему так все понятно?)) Зачет конечно и подписка!
@YauhenKavalchuk3 жыл бұрын
Спасибо
@dneposeda6 жыл бұрын
Спасибо! Коротко и самое главное понятно!
@YauhenKavalchuk6 жыл бұрын
И вам спасибо за отзыв!
@sashashumchuk65686 жыл бұрын
Все чётко и ясно) лайк.
@YauhenKavalchuk6 жыл бұрын
Спасибо
@Infinity-zf8ms4 жыл бұрын
Спасибо за ваш труд)
@YauhenKavalchuk4 жыл бұрын
Спасибо за отзыв)
@ВладимирГугин-ш7щ3 жыл бұрын
Спасибо что без лишней фигни)
@YauhenKavalchuk3 жыл бұрын
Пожалуйста
@mikhailivlev4 жыл бұрын
ой молодец, реально доступно рассказал)
@YauhenKavalchuk4 жыл бұрын
Спасибо)
@8malek5 жыл бұрын
Правильно я понял ... В первом блоке , где создаём промис ( new Promise ) мы делаем любой наш код ( условия , функции и тд ) в конце кода вызываем resolve() ... Потом по-любому должен быть хотябы 1 then и в этом блоке мы получаем функция , где указываем , что хотим делать , когда промис выполнился , например выведем модальное окно с какой-то инфой и так далее , задаём then пока собираемся выполнять какие-то действия последовательно ... Типа выполнился промис , первый then вывел красный div , как это произошло , вызывается второй then , где мы выводим синий блок , потом 3-й then , где мы выводим картинку и тд , пока хотим выполнять какие-то действия друг за другом ???
@armorunit6970 Жыл бұрын
Привет! Как он устроен это понятно. Но где может понадобиться такая конструкция `new Promise((resolve, reject) => {...})` ? С фетчом всё понятно - есть реальное практическое применение. Но где реально упрощает жизнь `new Promise()` ?
@armorunit6970 Жыл бұрын
Добавлю: Это в setTimeout() можно отправить resolve(), а как я отправлю его в какую-нибудь реальную асинхронную вещь?
@izograph4 жыл бұрын
Спасибо! Очень лаконично и ясно!
@YauhenKavalchuk4 жыл бұрын
Пожалуйста
@ineptDev5 жыл бұрын
супер!
@YauhenKavalchuk5 жыл бұрын
Спасибо!
@vit9442 жыл бұрын
Добрый день. А можно узнать, как можно данные с сервера положить в тег select?
@YauhenKavalchuk2 жыл бұрын
Это трудно пояснить словами. Приблизительный механизм можно найти в этом видео: kzbin.info/www/bejne/gn3YnpKamNeVfNE
@Zadorozhniy396 жыл бұрын
Спасибо :)
@YauhenKavalchuk6 жыл бұрын
Пожалуйста)
@osapo24 Жыл бұрын
Сложновато но не здаемся
@YauhenKavalchuk Жыл бұрын
👍
@pauldudich3 жыл бұрын
Когда был пример с fetch, то все было понятно, сам неоднократно использую эту конструкцию, но в первом примере с промис, резолв и реджект я никак не могу разобраться, не понимаю практического применения этой конструкции, это типо усложненная версия второго примера?
@YauhenKavalchuk3 жыл бұрын
Нет, это нативная реализация промиса, когда вы сами задаёте ему логику
@Civilizer19763 жыл бұрын
Правильно ли я понял из документации, что лучше в reject передавать экземпляр от объекта Error, что в свою очередь автоматически пробросит ошибку в .catch ? типа: const myPromise = new Promise((resolve, reject) => { let connection = true if(connection){ resolve('connection established') } else { reject(new Error('Connection refused')) //new Error gпробросит автоматом в .catch } )} myPromise .then(message => {console.log(message)}) //при connection = true выведет значение из resolve .catch(error => {conlole.log(error)}) //при connection = false выведет значение из reject: ('Connection refused')
@YauhenKavalchuk3 жыл бұрын
да, всё верно
@majestick10 ай бұрын
В начале синхронность и асинхронность спутали?
@YauhenKavalchuk10 ай бұрын
☹️
@SunLightDH4 жыл бұрын
catch не обязательно, ошибку, исключение можно ловить вторым аргументом then(res, rej), то есть rej должна быть функцией, в описании которой есть аргумент rej(arg){code}, так вот значение исключения, например текст ошибки: throw "someError", будет передан в arg функции rej
@YauhenKavalchuk4 жыл бұрын
А зачем использовать костыль, если нативно предоставляется метод для обработки. Сколько работаю, никогда не встречал такой вариант, как вы описали
@SunLightDH4 жыл бұрын
@@YauhenKavalchuk ну там есть свои нюансы использования того или иного варианта, хотя это может вообще не существенно. Просто когда вы отлавливает в catch, вы как бы уже точно ориентируетесь на возможную ошибку без дальнейшей цепочки выполнения, после успешного завершения, а если через then(arg1, arg2), тогда цепочку выполнения можно продолжать, перейдя к первому аргументу-функции, если ошибки не возникло
@ВладиславСоловйов-д2м4 жыл бұрын
@@SunLightDH .then(func1, func2) func2 не отловит ошибку в func1, catch отловит. Никто не запрещает делать then после catch + есть finally
@konstantinkkk83976 жыл бұрын
Было бы круто если бы ты к каждому своему уроку давал задания, и пускай сбрасывают кто как его решил, и друг друга исправляют
@YauhenKavalchuk6 жыл бұрын
Идея хорошая, но мне кажется что она не будет популярна. А тем более сбрасывать и проверять друг-друга. Сам думал об этом, но это всё мало вероятно.
@xD-hu3gw4 жыл бұрын
на практике бы хотел посмотреть как это можно использовать) но с фетчем понятно
@alexanderpogudaev84963 жыл бұрын
Автор видео объясняет хорошо... Наверное я что-то недопонимаю, но почему-то мне кажется, что промисы вовсе не упрощают callback hell...
@YauhenKavalchuk3 жыл бұрын
Об этом пишется во всех статьях по данной теме. Если преимущество не видно, то возможно, вы долго работали с callback, вот и привыкли)
@alexanderpogudaev84963 жыл бұрын
@@YauhenKavalchuk Вообще я как-то больше по С/С++. JavaScript только недавно начал осваивать. CallBack-и и в C использовал, но там это не носит такого масштаба. Поэтому обработка событий и асихронщина в JS сильно ломает мне мозг, но привыкаю понемногу. Спасибо за ответ и уроки!
@alexanderyinyang14366 жыл бұрын
Подскажи пожалуйста, что имеется ввиду kzbin.info/www/bejne/jnWUfn6ubMp8q7M ? функция data => console.log(data) все же возвращает data дальше по цепочке промисов? Я просто ожидал, что ты добавишь что-то вроде data => {console.log(data); return data;}
@YauhenKavalchuk6 жыл бұрын
Не по цепочке в моём случае ничего не возвращается. Я об этом упомянул и сказал что это просто пример для того что бы проверить полученные данные. Если данные нужно передать дальше, то используется тот синтаксис что написали вы!)
@chirog134 жыл бұрын
Я не понял, откуда data в ответе взялась, откуда мы понимаем что там будет?
@sergeys47323 жыл бұрын
У нас данные отдал резолв, потому что запрос был успешный
@YauhenKavalchuk3 жыл бұрын
Они пришли в ответе, так как был resolve. Он собственно и отдал данные
@АсланКартоев-ф6д4 жыл бұрын
Скажите а что за параметр data в then?
@YauhenKavalchuk4 жыл бұрын
Это данные, которые возвращаются из промиса
@МаксКондратенко-ц2е6 жыл бұрын
Спасибо за видео. Получается что промисы используются в основном для получения данных ? В связке с fetch? И нет смысла создавать через new Promise?
@YauhenKavalchuk6 жыл бұрын
Пожалуйста. Конструкция new Promise и правда редко используется, но что касается самих просимой, то их использование только fetch не ограничивает. Они отлично работают в связке с любыми асинхронными операциями. Но основная цель, да, я бы сказал получение данных
@olegpristashkin90784 жыл бұрын
Так если мы в es5 можем использовать try catch блок, зачем нам проимсы? Мы же в try catch можем обработать успешный и неуспешный кусок программы
@YauhenKavalchuk4 жыл бұрын
Ну, промисы это неотъемлемая часть асинхронного JS, пропустить данную тему было бы не правильно
@dodokwak4 жыл бұрын
Вопрос по 8:01 строка 22: можно(нужно) ли здесь explicit использовать return? Спасибо.
@YauhenKavalchuk4 жыл бұрын
Нет не нужно. Если вам нужно получить данные, то лучше передать их в функцию, которую описать внутри then. И внутри данной функции работают с ними
@dodokwak4 жыл бұрын
@@YauhenKavalchuk спасибо.
@Gavr-dev6 жыл бұрын
немножко не понял как с fetch сделать тоже что и перед этим делали с помощью таймаута
@Gavr-dev6 жыл бұрын
там создавался new Promise, а здесь я что-то не понял что происходит
@YauhenKavalchuk6 жыл бұрын
Таймаут в промисе я задал, что бы сделать код асинхронным, это довольно распространённый пример (скажем так эмуляция). С fetch таймер задавать не нужно, т.к. он и так работает асинхронно.
@dispeltr11835 жыл бұрын
получается then всегда возвращает промис?
@YauhenKavalchuk5 жыл бұрын
Да
@kirillbaryba7465 жыл бұрын
Евгений , есть вопрос . Использую Ajax (Fetch Api) делаю запрос к серверу через каждые N минут. Набросал код, но есть сомнения что я правильно это делаю jsfiddle.net/kirillos/kapxe4zd/16/ Можешь помочь разобраться ? Спасибо
@YauhenKavalchuk5 жыл бұрын
Много кода не нужного. По крайней мере обёртка из Promice. Просто используйте fetch - это конструкция и так возвращает промис. А ещё можете посмотреть вариант async/await - это следующее виде, если не ошибаюсь
@kirillbaryba7465 жыл бұрын
@@YauhenKavalchuk Спасибо
@EugeniaChe5 жыл бұрын
Классное объяснение! Скажи а что чаще используешь в реальных проектах, fetch или axios?
@YauhenKavalchuk5 жыл бұрын
Спасибо! Если выбирать только из этих 2х то чаще использовал fetch.