Гениально! Функция передана в качестве аргумента другой функции. Это самое простое объяснение, которое мне когда либо попадалось. Спасибо, до сих пор актуальная информация :)
@ДенисСероштан-й6т6 жыл бұрын
Александр, спасибо! Самое доходчивое и понятное объяснение про callback. Хотелось бы увидеть урок про promise, ну и async/await по возможности
@angelikakhodzhaian78435 жыл бұрын
Неужели спустя невероятное количество часов крови, пота и попыток понять callback-и --- это удалось! Спасибо за урок! ⇧
@itgid5 жыл бұрын
рад что помог!!!
@span4ev6 жыл бұрын
Спасибо. Самые лучшие уроки. Ждём замыкания, прототипы и promise. Все эти страшные слова) а вы так понятно и просто объясняете, с живыми примерами, что любой поймёт) Как говорится, если учёный не смог что-то обьяснить ребёнку - он не учёный. Только здесь в контексте джаваскрипт
@span4ev6 жыл бұрын
Только не понял, почему в дальнейшем функция y() переставала выдывать ошибку?
@ДмитрийНормов-ю6ц3 жыл бұрын
@@span4ev , теперь понял? Потому что мы передавали вместе нее то, что надо - 2-ю функцию.
@maxkrutov396 жыл бұрын
Просто нет слов, это самый лучший специалист по js и самый лучший преподаватель!!!!!
@itgid6 жыл бұрын
Спасибо за комментарий!
@itgid5 жыл бұрын
спасибо!
@JackSteamBoy2 жыл бұрын
Как бы хотелось чтобы у меня препод в колледже был такой как вы, хоть я и закончил учебу 8 лет назад. Вы без капли преувеличения лучший!
@ВладМухортов-э1з6 жыл бұрын
Очень понятно и доступно,много информации за короткий промежуток времени,большое спасибо!!
@itgid6 жыл бұрын
Спасибо за комментарий!
@TarasOstapiuk3 жыл бұрын
Алекс, уроков по JS в нете валом, но именно только тьі обясняеш правильно и понятно.
@shakhzod2352 жыл бұрын
Спасибо, понял функцию колбэк посмотрев ваш ролик
@asylzhanb23254 жыл бұрын
Где же Вы были раньше... Лучшее объяснения которую когда-либо слышал, благодарю Вас!!
@Bazilio37912 жыл бұрын
Вчера сидел смотрел на callback как баран на новые ворота. Спасибо!
@konstantinkkk83976 жыл бұрын
очень доходчиво! Снимите видео про замыкания, может хоть благодаря Вам смогу понять как они работают! За данное видео большое спасибо!
@itgid6 жыл бұрын
Спасибо. А про замыкания я уже говорил частично. Посмотрите предыдущие видео.
@serdotsenko6 жыл бұрын
ничего писать не планировал, но когда досмотрел до конца, решил, что всётаки напишу ) спасибо я всё понял, продолжай ) лайк, подписка!
@itgid6 жыл бұрын
Спасибо!
@MrReflection5406 жыл бұрын
Вы прирожденный учитель- умеете доходчиво подать информацию. *Друзья, пишите побольше комментариев, чтобы продвинуть видео. Чем быстрее поднимем канал, тем больше будет роликов*
@itgid6 жыл бұрын
Спасибо! Да, не забываем лайки ставить!
@ЛёхаХанин6 жыл бұрын
Один из принципов функционального прогарммирования прировнять к колбэк функциям - это гениально.
@oleksiykurylyuk46964 жыл бұрын
Первая функция всеравно отработала первой, (в ней 1 миллиард итераций) вторая дожидалась очереди. Время: 1.35 function aaaa() { let qq = 0; while (qq < 1000000000) { qq += 1; } console.log(qq); } function bbbb(){ console.log(2); } aaaa(); bbbb();
@Shanluu5 жыл бұрын
В начале не совсем понял про "порядок исполнения кода". Но всё же быстро изложу, как это на самом деле, для тех кто не понял, что имелось ввиду. Когда скрипт вызывает функцию - он добавляет её в call stack. Также туда попадают все фукнции, которые находятся внутри уже попавшей функции. Когда они отрабатывают - они убираются из call stack. Но есть такие вещи как : setTimeout, Ajax запросы и т.д - это уже функции WebAPI браузера , который помогает JS с работой. Функции внутри WebAPI после отработки попадают не в call stack, а в callback queue. Откуда они уже попадают в call stack через event loop, только после того, как call stack будет пуст.
@TabookiGoo6 жыл бұрын
Материал, речь - все огонь, спасибо большое )
@Tipuchek6 жыл бұрын
Ничего не буду писать. Хотя напишу) лучшая подача инфо. Спасибо)
@itgid6 жыл бұрын
спасибо!
@victortee52695 жыл бұрын
Очень понятно обьясняете. С шагами влево и вправо) спасибо!
@MrColins7106 жыл бұрын
Пояснення супер, чітко і конкретно, дякую
@maria-kuznetsova-s6 жыл бұрын
Спасибо большое за объяснение, вроде пишу на js, давно использую calback-функции, но сегодня задалась вопросом, а точно ли я знаю это определение, понимаю ли я, что именно входит в понятие calback-функций. Именно такие возвращения к истокам и понимание на очень простом уровне помогают более гибко и свободно использовать необходимые инструменты. Успехов и процветания вашему каналу)!!!
@itgid6 жыл бұрын
Спасибо! Очень приятно!
@dimageorgiev57986 жыл бұрын
Четко и по существу без водички !
@viktorys73604 жыл бұрын
Наконец-то простое и разжованое объяснение про callback. Спасибо))
@farkhadkarim121625 күн бұрын
Все отлично, для лучшего качества видеоуроков купи тихую мышь и клавиатуру плиз
@17u5h2 жыл бұрын
очень хорошее объяснение. спасибо
@macabrius91114 жыл бұрын
Большое спасибо за разъяснения. Лайк, подписка, всё как заведено))
@timoxin6 жыл бұрын
Очень подробно и понятно. СПАСИБО!
@itgid6 жыл бұрын
Спасибо!
@hondovod2502853 жыл бұрын
9:15, люди, подскажите, а что если заместо функции "обертки" аргументы 5 и 7 написать сразу в y(), которая в конце функции first??? Это работает. Но правильно ли будет такая запись??
@user-bu3hzj734e4r5 жыл бұрын
Офигеть какое хорошее объяснение и примеры. Спасибо! Уже подписываюсь
@RoadToDreamFilm3 жыл бұрын
Большое спасибо, за подробное объяснение!)
@ohnocringe56042 жыл бұрын
спасибо, объяснили понятно, только я не понял зачем нужен игрик??
@МуратОрозобаев6 жыл бұрын
А почему не соблюдает порядок выполнения функций. Это относится только к асих функци. То есть setTimeout, ajax или promise
@itgid6 жыл бұрын
господи, раз оговорился, теперь хоть видео удаляй.
@iliyabrook29334 жыл бұрын
Огромное спасибо! не хватало качественного разеснения о колбэках
@yakut546 жыл бұрын
Спасибо, дядька! как всегда кратко, понятно и здорово! От души!
@svitlana64202 жыл бұрын
Супер, у вас дар учителя!
@okujava36782 жыл бұрын
Доброго времени суток. А Вы можете объяснить каким образом значения параметров попадают в переменные n1 и n2. То есть можно как бы передавать параметры наверх function start(callback) { return callback(3, 5); } let result = start(function(num1, num2){ console.log(` Это параметры из колбэка: ${num1} ${num2}`); return num1 + num2; }) console.log(`Результат: ${result}`);
@АнтонВладыченко-с4д4 жыл бұрын
классно обьясняете! становится все понятно!
@YashaVlazhniu4 жыл бұрын
05:08 а если консоль вывести через таймаут, все равно вторая функция первее ведь выполнится?
@nugamsk4 жыл бұрын
Очень понятное объяснение! Спасибо
@PavelPogosov4 жыл бұрын
Огромное спасибо за ваш урок!!!
@Epenckorn4 жыл бұрын
Не совсем понятно про анонимную функцию. Почему с вызовом second() не работает, а с объявлением анонимки работает? Ведь что одна, что другая, ничего не возвращают.
@maximpodhorny28646 жыл бұрын
я приятно удивлен! Лайк, подписка!
@blackch1p5 жыл бұрын
Отличные видео. Для донатов так же следует завести ЯД кошель:)
@troubleshooters-67444 жыл бұрын
Интересно с первого ли раза записали, слишком превосходное объяснение!) Хотелось бы порекомендовать при записи и сравнении кода, Вы бы могли разделить экран VS CODE для более наглядного сравнения, имхо)
@pandaskeptic29375 жыл бұрын
Очень хорошо объясняете. Всё понял. ❤️👍🔥
@ultexplorer5 жыл бұрын
Здравствуйте. А почему в таком варианте не работает(результат undefined)? Код: function first(y){ y(); }; function second(a, b){ return a*b; }; console.log(first(function(){ second(100, 3); }));
@weynemeynen3 жыл бұрын
как только first() будет чуть сложней, в начале выполниться second() !? js не обеспечивает порядок выполнения записанный в коде?! Что-за пурга?!
@veavob25343 жыл бұрын
А можно просто там, где вызывается функция y() в first, на 9:39 минуте, просто в у записать параметры, я так сделал и у меня всё отработало без ошибок
@valentinpetrenko66114 жыл бұрын
Все доходчиво и понятно. Спасибо
@danya92354 жыл бұрын
9:37 Как получается, что анонимная функция связана с second() ?!
@ДмитрийЧулков-ь1ч4 жыл бұрын
Danya автор просто привёл пример, что внутри обертки может быть функция без имени
@yarik83men515 жыл бұрын
Просто + понятно + гениально ... Спасибо
@kawaikaino52776 жыл бұрын
Запишите пожалуйста урок о вложенных функциях, как и что они возвращают через Return и как делятся аргументами
@itgid6 жыл бұрын
Если бы вы описали пример - смог бы записать.
@NarkotikAsd4 жыл бұрын
Что-то не понятно почему вы ожидаете выполнения первого лога когда вы изначально установили ему задержку по времени. соответственно этой задержке и выполняется порядок функций . поэтому 2 выполнился раньше первого. Спасибо....
@stasmaksimov95315 жыл бұрын
Круто! Спасибо 👍
@itgid5 жыл бұрын
Спасибо что оставляете комментарии!!!
@goedekoop5015 жыл бұрын
немного не понял, когда её использовать ? ибо я ведь не всегда могу понять , корректно ли выведется или нет, немного туплю
@parvaqa13986 жыл бұрын
Здравствуйте! Спасибо за хорошие уроки! Но я всё никак не могу понять, в какой момент запись `y( )` внутри первой функции стала означать исполнить функцию `second`? Это происходит только потому что в качестве аргумента первой функции используется `y`? Т.е. если мы указали некий аргумент внутри круглых скобок первой функции, а потом его же вызываем в виде функции внутри фигурных скобок первой функции, то потом ниже, когда мы уже вызываем саму родительскую (высшего порядка) функцию, нам надо передать в качестве аргументов некую дургую функцию и НЕВАЖНО, что она тоже безымянная. Важно, что в её теле есть конкретная именная функция, которую браузер найдёт в коде и исполнит с заданными аргументами. ... Пока писал, сам понял, похоже.
@itgid6 жыл бұрын
Супер, когда читаю такие комментарии - радуюсь. Мы на работе тоже практикуем, если не знаешь как делать, расскажи другому задачу. Пока рассказываешь - сам начинаешь соображать.
@nicothin5 жыл бұрын
В самом начале ролика (2:00) есть очень странное утверждение, выглядящее ложным. Далее посыл ролика строится преимущественно на этом утверждении.
@ДмитрийНормов-ю6ц3 жыл бұрын
Да, тоже заметил чет не то)
@ПавелКапелюховский5 жыл бұрын
А почему вы пишите в функции first "у();" это то же самое, что и return(y) или console log (y) ?
@sergeyplotnikov50316 жыл бұрын
Большое спасибо за объяснение!!
@fonzadof6 жыл бұрын
Великолепно!
@erjan8165 жыл бұрын
7:52 "консль лох 1"? Или мне только так послышалось
@yaroslavzef72674 жыл бұрын
да, зачечал, что даже многие кто не с Украины обзываются на консоль лохом..
@paljm345 Жыл бұрын
А почему не показали еще один способ передачи аргументов, типа такого: function first(y) { console.log(1); y(2, 4); } function second(a, b) { console.log(a + b); } first(second); Все так же работает. Мы же не просто так передаем колбек, да еще и с аргументами.
@denystry4 жыл бұрын
а если будет function first(a,b,y){ return y(a,b); } function second(a,b){ return a+b; } first(2,3,second); Это тоже коллбек?
@GamerGuyMen3 жыл бұрын
Da
@victordegtyarov96346 жыл бұрын
годно рассказал,спасибо!
@erragon41745 жыл бұрын
Здравствуйте такой момент у меня first довольно долгая по выпонению функция, а second легкая и быстрая но все равно в консоле сначала выводиться first а потом second (не асинхронно) вот пример кода: let a = 0; function first() { for (var i = 0; i < 500000000; i++) { a=a+i; } console.log(a); } function second(a,b) { console.log(a*b); } first(); second();
@oleksiykurylyuk46965 жыл бұрын
8.00. В 'y' ляжет, то что возвращает отработанная ф-ция Секонд?. Да, так и есть, проверил. В Вашем примере в 'y' записалось андефейнед. "use strict" function first(q){ console.log('first is done'); console.log(q); } let second = (a,b) => { console.log('second is done') return a*b}; first(second(3,5)) вывод в консоли: - second is done //первая отработала функция second(3,5), которую поместили аргументом в ф-цию first, после свой роботы и вывода в консоль, передала свой ретерн к вачестве аргумента ф-ции first - first is done //отработал первый консоль, ф-ции first - 15 // отработал второй консоль, ф-ции first, q - равно ретерну функции second
@FunnyLive3 жыл бұрын
Windows. setimout эта функция web API , дак вот по логике получается следующее. Когда вызывается функция сет таймаут то она помещает вызовов функций console.log в web API далее по истечению времени она возвращается в callback queue после чего в call stack. И функция first была вызвана первой потом settimout потом second потом console.log(2) и наконец только console.log(1) ибо она вернулась в стек из callback queue. И все это крутит event loop .Далее смотреть не стал.
@manasbekeshenkulov73896 жыл бұрын
Все четко и понятно !!!
@ВикторКулагин-ь2у6 жыл бұрын
Полезно!
@Публичныйканал-с3м5 жыл бұрын
У вас отличные уроки. А где есть урок по анонимные функции?
@umjetnost43174 жыл бұрын
задержка в 200 мс не работает :( function one(y){ console.log("hello once"); y(); } function two(){ console.log("hello twonce"); } setTimeout (one(function(){ two(); }), 200);
@englishtogether65063 жыл бұрын
а можно написать y(4,7) ?
@yarik83men514 жыл бұрын
Идеально. Спасибо.
@dmytrolambru29846 жыл бұрын
Красава как обычно, все четко по делу! ))
@Tipok_156 жыл бұрын
ПОНЯТНО И ПРОСТО!!!!!!
@RenatGF6 жыл бұрын
kzbin.info/www/bejne/faHZqGCim7uGrckm7s - Понятно, что ты хотел показать примером. Но тут пример не совсем корректный. Даже если в setTimeout указать 0ms, а функция second будет выполняться 500ms. То все равно выполнится сначала функция second, а потом только first. Потому что все то, что обернуто в setTimeout, будет выполняться в последнюю очередь
@indigosay5 жыл бұрын
нашли решение для этого вопроса? Чтобы second потом выполнялась
@MiqayelPetrosyan4 жыл бұрын
можно и так first(()=>second(5,7))
@acebradok4 жыл бұрын
а почему бы не сделать вот так: function first(callback){ alert('f1') callback(4,7) } function second(a,b){ alert(a*b) } first(second) Здесь нам и не придётся делать анонимные функции и все выводится в порядке
@Bugsy09879873 жыл бұрын
Кстати да, я сделал так же, работает
@hooligan56434 жыл бұрын
🔥🔥🔥🔥
@MrVertu013 жыл бұрын
Спасибо)
@marharytahlinskaya11656 жыл бұрын
А как насчет такого вызова: function first(y){ console.log(3); y(3,6); } function sec(a,b){ console.log(a+b); } first(sec); ? Работает ведь, как и с анонимной.
@pavelsokolov41906 жыл бұрын
Вы передаёте параметры при определении функции, а не при вызове. Работать будет, но смысла в этом нет.
@Виталий-е9д5е5 жыл бұрын
все равно не понял... почему first(second(4, 7)); - так секонд сработает в первую очередь, а если first(function() {console.log(100)}); - так во вторую... В первом случае функция вызывается и отрабатывается сразу... А во втором почему не так?
@Виталий-е9д5е5 жыл бұрын
Я гений блин... доперло...
@ДмитрийНормов-ю6ц3 жыл бұрын
@@Виталий-е9д5е а ну расскажи?
@petrvictorovich2 жыл бұрын
"Способ борьбы с асинхронностью"!? А зачем с ней бороться? Это не проблема - а возможность.
@prsion19256 жыл бұрын
красавчик !! лайк подписка!!!
@Retruntobase5 жыл бұрын
Самый первый человек, объяснение программы, которого я смог воспринять на русском языке)
@Pain-kt6mm3 жыл бұрын
Так что такое callback
@TheTexPro5 жыл бұрын
Спасибо большое!
@ДмитрийАлексеевич-л2д6 жыл бұрын
Донатим с миру по копеечке, чтоб было еще больше уроков
@digitalturkistan18576 жыл бұрын
согласен
@digitalturkistan18576 жыл бұрын
я бы миллионы кидал увы ...
@sens43815 жыл бұрын
А можно сделать просто, вот так? const f1 = (y) =>{ console.log(3); y(3,4); //Вот так объявить параметры? } const f2 = (a,b) => { console.log(a + b); } f1(f2)
@olena_andriienko4 жыл бұрын
лайк, если пришел посмотреть видео после статьи на hexlet )))
@EdritKolotit3 жыл бұрын
9 месяцев прошло. 0 лайков.
@maxb32545 жыл бұрын
Первые три минуты меня привели в замешательство, если честно. Глаза мои выпучились. Мир никогда не станет прежним, если это действительно правда. А нет. Мир не изменился :)
@konstantinkkk83976 жыл бұрын
учил callback functions на английском ресурсе, и не могу понять как оно определяет чему равно el, ведь мы его нигде не задавали? var years = [1990, 1965, 1937]; function arrayCalc(arr, fn) { var arrRes = []; for (var i = 0; i < arr.length; i++) { arrRes.push(fn(arr[i])); } return arrRes; } function calculateAge(el) { return 2017 - el; } var ages = arrayCalc(years, calculateAge);
@SlonoKing6 жыл бұрын
В параметр el передается год рождения
@dmitrijponkin6 жыл бұрын
Спасибо!
@dali1ize5 жыл бұрын
Круто Спасибо
@EugeneMilto6 жыл бұрын
Спасибо.
@SunLightDH4 жыл бұрын
Да, все хорошо, но есть не важное замечание: функция принимает не параметр, а аргумент, (будь-то функция или ещё что), а внутри, в теле функции, параметр, то что принимает этот аргумент из скобок
@cshost21446 жыл бұрын
Так всетаки как нужно по очереди выполнять функции если не калбек
@itgid6 жыл бұрын
не понял?
@singlebw40655 жыл бұрын
/*Предполагаю что можно построить дерево из функций. ХЗ зачем, но мне кажется что все тыкают языки просто ради того, сможет ли язык сделать какую то херню, но потом не знает что с этим делать. */ function a( a ){console.log( 1) ;} function b( b ){console.log( 2 );} function c( c ){console.log( 3 );} function d( d ){console.log( 4 );} function e( e ){console.log( 5 );} function f( f ){console.log( 6 );} f( e( d( c( b( a() ) ) ) ) ); // короче обратный callback какой-то Вот ещё Всё читается справа налево. Сначала все функции смотрят что есть в аргументе, если там функция да ещё и вызвана, то выполнится она раньше чем вызывающая функция. Если закинуть функцию в конец всех аргументов, то можно и не указывать аргумент в прототипе вызывающей функции. Это тот вариант когда нужно вызвать функцию при этом другая функция тоже должна отработать function myFunc1( aa, bb ) { console.log( aa + bb ) ; }//NaN если ни чё не передать, но функция отработала 1й как и полагалось function myFunc2( a, b ) { console.log( a+b ); } myFunc2( 22, 38, myFunc1() ); Чё с передачей аргументов function myFunc3( myFunc_4 ) { console.log(11); myFunc_4( "Первый", " способ" ); }//заранее передать аргументы function myFunc4( a, b ) { console.log( a + b ); } myFunc3(myFunc4); ну или как показано в видео myFunc3( function ( ){ // ну как мы уже знаем. вызванная функция в аргументе срабатывает сразу, myFunc4("Второй"," способ"); } ); //положили в ячейку новые значения для этой функции
@maxgloba_dev4 жыл бұрын
let request = (value, callback) => callback(value + 10); request(10, result => console.log(result));