Лучшее объяснение для чего нужны промисы! Отдельное спасибо за отличное качество видео и за крупный шрифт в редакторе! Сразу видно, что думали о людях которые будут смотреть ваш ролик.
Интересное объяснение с отжиманиями и приседаниями :) Усовершенствовал алгоритм: 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('Упражнения завершены'));
Будет супер-полезно, если Вы сделаете ролик с использованием промисов на практике. Очень хотелось бы увидеть, как с помощью них подключаются к БД, например, mysql и выводят что-то на страницу
Очень интересно и информативно! Узнал, что такое promises и Async/await. А то на learnjs читал, не мог понять что это вообще такое. Спасибо) Интересно, почему так редко видео выходят? Времени нет или мотивации?
Спасибо за комментарий) Постоянно сам хочу чаще записывать, наверное тут вопрос мотивации, бывает целый день уходит чтобы видео сделать) Думаю добавить донаты какие то и будет чаще)
@@kalmanbraz7696 на самом деле, в видео не хватает более сложных ситуаций использования Async/Await. Например, когда нам нужно выполнить 3-4 запроса на разные сервера, где очередность важна. Или получить данные по 1000 пользователям из стороннего апи в ограничениями на кол-во запросов от одного клиента (или кол-во запросов в секунду). Тут бывает полезно применять циклы или методы из встроенного Promises API, которые в видео не были рассмотрены, вот об этом и речь :)
Это пример использования на видео, для того, чтобы не усложнять восприятие опущены детали реализации функции. Но есть способ через псевдомассив arguments это сделать, можем пофантазировать что внутри тела функции (...) используется именно он 🙂🙃
В последнем примере, функция myTraining вернула false из блока catch. Каким образом, результат выполнения попал в then и был выведен в консоль, если был передан только аргумент result, который принимаетзначение из успешно разрешенного промиса?
Т.к мы обработали ошибку внутри функции myTraining, эта ошибка у нас вверх не всплывает, мы её перехватили. Поэтому эта функция у нас была успешно выполнена, и т.к в случае ошибки мы возвращаем из функции false, именно он и попал в then
Если бы мы не указали try/catch в функции myTraining, то ошибка как-бы всплывала бы до первого такого обработчика(если он есть). Другими словами: там где мы укажем catch там и словим ошибку :)
JS ACADEMY - Влад Грибенников ну а если у нас, допустим, ситуация, когда произошла ошибка, выполнение перешло в блок catch и далее у меня есть обработчики then и catch, как мне сделать так, чтобы выполнился код, который прописан в catch?
Тут лучше всего пробросить ошибку дальше. В первом catch пишем throw err(err - переменная с ошибкой, то что в скобках catch указано), таким образом можно обработать ошибку даже в двух местах
в начале видео неправильный синтаксис идет (если конечно это не псевдокод): 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, что позволяет с легкостью использовать его в циклах, или сложных условиях.
На слайдах нет синтаксических ошибок, я в видео делал акцент на том, что троеточие - это реализация функции, которая будет рассмотрена позже) По async/await возможно и правда стоит записать отдельное видео чтобы разъяснить где их лучше/удобнее использовать, однако они все-равно являются синтаксическим сахаром, потому как можно писать и через then, так и через async/await. Второй вариант выглядит просто гораздо аккуратнее, короче и легче воспринимается, но работает все-равно аналогично цепочке промисов 🤷♂️
Не надо было пояснять про Promise и async\await вместе. Слишком много упускается вещей! Недостаточно раскрыто вот что: 1. Что является вторым аргументом в then ? и как это связано с catch? 2. Что если асинхронная функция не возвращает промиса, что делать? И причем тут Promisify ? Много чего можно было добавить. Просто не нужно мешать разные темы. Разве что потом, когда уже одно и второе пояснил сделать обобщенную про то как async\await сокращает код
По первому не расскрыл, потому, что я считаю второй аргумент в then бесполезным и неэффективным. А второй пункт я вообще не понял) Асинхронная функция всегда возвращает промис, и, действительно, при чем тут Promisify? Я не включил в видео много нюансов, для того, чтобы упростить понимание промисов. Если записывать видео про всё что есть по этой теме, это будет несколько часов, да и думаю таких видео в интернете навалом) Целью этого видео не было дать полную информацию о всех возможных вариантах работы с промисами, а дать знания, которые используются на практике в 95% случаев. Видео расчитано на людей, начинающих знакомство с джаваскриптом, у которых трудности с пониманием как работают промисы.
@@jsacademy772 Спасибо за старания! Они видны. Но все-таки надо ольше именно было раскрыть про второй параметр. Ведь приходя на работу человек сталкивается с Legacy-кодом, т.е. с тем что уже написано. Одно дело знать Best practices и др. им следовать. Не всегда есть возможность следовать. Более того даже читая код надо знать что он делает, чтоб корректно переписать на best practices . А так да, все супер! ;)
Четкие примерчики. Прекрасная идея-ассоциация с тренировкой 🎉
Это видео очень сильно помогло мне. До этого я посмотрел несколько видосов и никак не мог врубиться даже зачем используют setTimeOut. Благодарю!
Спасибо, достаточно полно и понятно раскрыта тема.
Помог вспомнить промисы, благодарю.
Крутой урок, я стала ближе к пониманию промисов, чем после просмотра нескольких видосов и чтения доков.
Если будут какие-либо вопросы, пишите, сделаем еще видео!)
Спасибо, самое понятное объяснение из всех, что пересмотрела.
хуйнф - ничё не понятно
Самое понятное объяснение из всех что я видел, скорей всего за счёт понятных абстракций. Подписка.
Спасибо!)
Лучшее объяснение для чего нужны промисы! Отдельное спасибо за отличное качество видео и за крупный шрифт в редакторе! Сразу видно, что думали о людях которые будут смотреть ваш ролик.
Благодарю)
Надо было функцию Давидыч назвать
Сел встал сел встал
Огромное спасибо! Вторые сутки пытаюсь детально понять promise (async-await), вот с Вашим видео дошло наконец! Побольше таких видосов!
Благодарю :) У меня в планах есть вторая часть по более сложным концепциям, например, множественным промисам!
Благодарю за урок! Очень доступно объясняете
Спасибо. Очень наглядно и доходчиво!
Бомбезное объяснение👍
ой годнота! блин, прям нужно было отдельное видео по этой теме) лайк и репост господа, лайк и репост...
Спасибо! Очень рад что видео несёт пользу!)
Классное видео, самое хорошее обьяснение промисов
Спасибо!:)
Интересное объяснение с отжиманиями и приседаниями :)
Усовершенствовал алгоритм:
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('Упражнения завершены'));
Спасибо) получилось действительно интересно)
Лучшее объяснение о промисах! Спасибо!
Спасибо! Очень приятно знать, что делаю что-то важное!
Спасибо, хороший и очень понятный пример использования Промисов.
Невероятно крутой видос, автор все разложил по полочкам. Спасибо!
сподобалося, хотілося б більше таких коротких і змістовних відео!)
Оксана Санаж на какую тему?:)
Очень круто разъяснил) Спасибо тебе большое, пример очень понятный и практичный лично для меня) Удачи в дальнейших роликах, у тебя талант)
Спасибо большое!) Очень мотивируют такие сообщения!
Спасибо большое процветанию твоему каналу удачи тебе бро!!!
Будет супер-полезно, если Вы сделаете ролик с использованием промисов на практике. Очень хотелось бы увидеть, как с помощью них подключаются к БД, например, mysql и выводят что-то на страницу
Спасибо за обратную связь!)
Думаю это вполне реально, сделать несколько практических примеров! Подумаю и запишу обязательно!)
спасибо за четкое объяснение!
Большое спасибо, очень полезный урок.
Спс очень просто и понятно обяснил. С меня лайк
Спасибо! Хорошее видео и пример хороший !)
Спасибо!)
Классный урок. Просто и понятно. Спасибо!
Отличное объясняете, спасибо!
Очень круто!! Очень доступно!
Урок супер
Очень интересно и информативно! Узнал, что такое promises и Async/await. А то на learnjs читал, не мог понять что это вообще такое. Спасибо) Интересно, почему так редко видео выходят? Времени нет или мотивации?
Спасибо за комментарий) Постоянно сам хочу чаще записывать, наверное тут вопрос мотивации, бывает целый день уходит чтобы видео сделать)
Думаю добавить донаты какие то и будет чаще)
Спасибо!
Спасибо!)
Круто, спасибо
Годно. Не останавливайся!
Виктор Астахов спасибо, уже готовлю следующее 😉
все супер, но отжимания это push ups, а wring out это выжимать)
может, он жим лежа делает в зале :)
хороший видос
Даешь async-await туториал!
Async/await будет следующим :)
@@jsacademy772 вы же уже рассмотрели async await в этом видео
@@kalmanbraz7696 на самом деле, в видео не хватает более сложных ситуаций использования Async/Await. Например, когда нам нужно выполнить 3-4 запроса на разные сервера, где очередность важна. Или получить данные по 1000 пользователям из стороннего апи в ограничениями на кол-во запросов от одного клиента (или кол-во запросов в секунду). Тут бывает полезно применять циклы или методы из встроенного Promises API, которые в видео не были рассмотрены, вот об этом и речь :)
@@jsacademy772 тогда было бы неплохо сделать видео, чето трудно мне эта тема дается)
@@jsacademy772 лол, ну и где?
2:19 В функцию без параметров (wringOut) передаем параметр. Как так?
Это пример использования на видео, для того, чтобы не усложнять восприятие опущены детали реализации функции. Но есть способ через псевдомассив arguments это сделать, можем пофантазировать что внутри тела функции (...) используется именно он 🙂🙃
Хорошее видео , все понравилось )) запущу бота , путь заслуженно пролайкает тебя в инстаграме . лайк и подписка +
енди уорхл спасибо!)
Push-ups, а не wringouts. Второе - это отжимать в смысле отжимать бельё, платок или тряпку.
спасибо большое
лучший
хорошо объяснил
В последнем примере, функция myTraining вернула false из блока catch. Каким образом, результат выполнения попал в then и был выведен в консоль, если был передан только аргумент result, который принимаетзначение из успешно разрешенного промиса?
Т.к мы обработали ошибку внутри функции myTraining, эта ошибка у нас вверх не всплывает, мы её перехватили. Поэтому эта функция у нас была успешно выполнена, и т.к в случае ошибки мы возвращаем из функции false, именно он и попал в then
JS ACADEMY - Влад Грибенников спасибо, а в каком случае, результат бы попал не в then, а в catch?
Если бы мы не указали try/catch в функции myTraining, то ошибка как-бы всплывала бы до первого такого обработчика(если он есть). Другими словами: там где мы укажем catch там и словим ошибку :)
JS ACADEMY - Влад Грибенников ну а если у нас, допустим, ситуация, когда произошла ошибка, выполнение перешло в блок catch и далее у меня есть обработчики then и catch, как мне сделать так, чтобы выполнился код, который прописан в catch?
Тут лучше всего пробросить ошибку дальше. В первом catch пишем throw err(err - переменная с ошибкой, то что в скобках catch указано), таким образом можно обработать ошибку даже в двух местах
Зачем запятая на 9:35 перед умножением времени на количество ?Без нее не работает,не могу понять какую функцию она выполняет
Эта запятая перед вторым аргументом в функции setTimeout. Первый аргумент это функция-коллбек, а второй - когда эта функция должна сработать
@@jsacademy772 спасибо
в начале видео неправильный синтаксис идет (если конечно это не псевдокод):
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, что позволяет с легкостью использовать его в циклах, или сложных условиях.
На слайдах нет синтаксических ошибок, я в видео делал акцент на том, что троеточие - это реализация функции, которая будет рассмотрена позже)
По async/await возможно и правда стоит записать отдельное видео чтобы разъяснить где их лучше/удобнее использовать, однако они все-равно являются синтаксическим сахаром, потому как можно писать и через then, так и через async/await. Второй вариант выглядит просто гораздо аккуратнее, короче и легче воспринимается, но работает все-равно аналогично цепочке промисов 🤷♂️
Отличный ролик, все так понятно объясниил. Это не официальную документацию читать по несколько раз и в итоге ничего не понимать
Иии примерно через 5 секунд ... пишу код и сам не верю )
Не надо было пояснять про Promise и async\await вместе. Слишком много упускается вещей!
Недостаточно раскрыто вот что:
1. Что является вторым аргументом в then ? и как это связано с catch?
2. Что если асинхронная функция не возвращает промиса, что делать? И причем тут Promisify ?
Много чего можно было добавить. Просто не нужно мешать разные темы. Разве что потом, когда уже одно и второе пояснил сделать обобщенную про то как async\await сокращает код
По первому не расскрыл, потому, что я считаю второй аргумент в then бесполезным и неэффективным. А второй пункт я вообще не понял) Асинхронная функция всегда возвращает промис, и, действительно, при чем тут Promisify?
Я не включил в видео много нюансов, для того, чтобы упростить понимание промисов. Если записывать видео про всё что есть по этой теме, это будет несколько часов, да и думаю таких видео в интернете навалом)
Целью этого видео не было дать полную информацию о всех возможных вариантах работы с промисами, а дать знания, которые используются на практике в 95% случаев. Видео расчитано на людей, начинающих знакомство с джаваскриптом, у которых трудности с пониманием как работают промисы.
@@jsacademy772 Спасибо за старания! Они видны. Но все-таки надо ольше именно было раскрыть про второй параметр. Ведь приходя на работу человек сталкивается с Legacy-кодом, т.е. с тем что уже написано. Одно дело знать Best practices и др. им следовать. Не всегда есть возможность следовать. Более того даже читая код надо знать что он делает, чтоб корректно переписать на best practices .
А так да, все супер! ;)
Спасибо)