Robur вот по этому видео https://youtu.be/Gpvw-lfVSwg
То есть получается колбэки содержат просто асинхронную логику?
И чем асинхронная логика отличается от чистой асинхронности? Спасибо, если развернуто ответите
Vladislav, чуваку в видео еще рано записывать такие видео.
Судя по фразе "не дожидаясь завершения first джаваскрипт сразу стартует функцию second" он вообще не понимает что там происходит.
Остальное я слушать не стал.
Не смотрите его, найдите что-то нормальное.
И чем асинхронная логика отличается от чистой асинхронности?
Асинхронная функция - это функция которая содержит асинхронную логику. В чистом виде, с точки зрения языка это функция которая в определении имеет слово "async".
Однако так как раньше этой конструкции в языке не было, так часто называли любую функцию которая содержит асинхронную логику.
Асинхронная логика - это логика которая срабатывает в какой-то момент времени как реакция на некое событие.
например setTimeout(foo, 1000)
пример асинхронной логики "поставить таймер на 1 секунду и после того как он сработает, вызывать функцию foo". foo может быть как синхронной так и асинхронной, но вызывается она асинхронно относительно этой логики, потому что между "поставить таймер" и "вызывать функцию" проходит какое-то время и все это время, программа работает дальше и выполняется какой-то код. ключевой момент - "выполняется какой-то другой код".
для примера:
let x=1
function foo() { x=x+1 } ///синхронная функция, выполнится полностью при вызове
function boo() { //синхронная функция, тоже выполнится полностью
setTimeout(foo, 1000) // асинхронная логика, через некоторое время после выполнения этого кода, выполнится foo
}
boo()// синхронный вызов
foo()// тоже синхронный вызов
Vladislav, колбеки это просто название приема, когда функция передается куда-то, чтобы потом ее могли вызвать.
function foo(callback) { callback(12) } // можно было и не колбеком назвать
function boo(x) {console.log(x)} //тут она просто функция, и не в курсе что сейчас ее используют как колбек
foo(boo) // вызываем foo, передаем ей boo, она эту boo вызовет с параметром 12.
Robur, то есть как на видео вызов второй функции не надо вставлять в первую, а просто вызвать первую с параметром второй функции аргумента, правильно понимаю?