Sergey
+
ikasymov
можете скинуть исходник forEach как он работает
Anonymous
каллбеки не обязаны выполняться асинхронно
Anonymous
для асинхронности нужен ввод-вывод
Kons
можете скинуть исходник forEach как он работает
Например, так: Array.prototype.forEach = function(callback) { for (var i = 0; i < this.length; i++) callback(this[i], i, this); };
ikasymov
для асинхронности нужен ввод-вывод
можете примером показать асинхронный колбек и не асинхронный?
Anonymous
выше неасинхронный
ikasymov
я думал все функции при вызове попадают в event loop
Sergey
функции да, но не все они выполняются асинфхронно
Sergey
например если у тебя математика внутри функции, то она будет выполняться асинхронно и залочит event loop
Anonymous
што
Sergey
разве не так?
Sergey
даже я не понял что это значит)
Sergey
ну это значит что данная функция влюбом случае попадет в event loop, но при выполнение залочит его
Kons
Парни, никакой магии в ноде нет. Не нужно пытаться усложнить, придумывая, что нода каким-то магическим образом определяет, что функция асинхронная, или что в ней есть математика, и таким образом включает или не включает её в евент-луп.
Sergey
Звучало так будто математика задала асинхронность функции)
Sergey
я некоректно выразился
Sergey
насколько я знаю любая функция попадает в event loop, по другому она просто не выполнится
Sergey
Парни, никакой магии в ноде нет. Не нужно пытаться усложнить, придумывая, что нода каким-то магическим образом определяет, что функция асинхронная, или что в ней есть математика, и таким образом включает или не включает её в евент-луп.
Sergey
просто если в вашей функции есть синхронные операции, то пока они не выполнятся у вас движок будет занят выполнением этих операций
Mykola 🤷🏼‍♀️
Если бы функция попала в event loop, то коллбэк бы выполнился после 'after'
Sergey
почему?
ikasymov
почему?
потому что он будет ждать пока очишется стэк
Mykola 🤷🏼‍♀️
Вот например
Mykola 🤷🏼‍♀️
вот здесь уже асинхронно, потому что попадает в event loop
ikasymov
Вот например
без сэттайма можете показать мне асинхронный код
Mykola 🤷🏼‍♀️
даже если setTimeout 0 секунд
ikasymov
есть стэк even loopa который берет и пушет на стэк js
Egor
Че..?...
Vitaly
вот здесь уже асинхронно, потому что попадает в event loop
Евент луп, если перевести с буржуйского - цикл. Где тут асинхронность?
ikasymov
setInterval
и без этой хуйни
Mykola 🤷🏼‍♀️
Евент луп, если перевести с буржуйского - цикл. Где тут асинхронность?
after вывелось раньше всех, но в коде вызов делается позже всех
Vitaly
fs.readFile
Mykola 🤷🏼‍♀️
так мб?
Egor
Ох, парни, тут просто треш в чате начинаете, лучше всем остановится, либо прочитать мат. часть
Vitaly
https://www.youtube.com/watch?v=8aGhZQkoFbQ
Sergey
https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/
Kons
Эх, опередил =)
Kons
http://latentflip.com/loupe/
Sergey
Event Loop Explained - там все описано кратко + удобная картинка
Sergey
там кстати и ответ, почему без сет таймаута такой порядок вывода в примере выше
ikasymov
https://www.youtube.com/watch?v=8aGhZQkoFbQ
именно после просмотра этого видео у меня был этот вопрос
ikasymov
так мб?
тут не твоя функция асинхронная в fs.readFile
Kons
https://youtu.be/8cV4ZvHXQL4?t=19m58s - вот про твой форич
Kons
тут не твоя функция асинхронная в fs.readFile
Именно после просмотра этого видео ты должен был понять, что в JS нет асинхронных функций
ikasymov
вызов функции
ikasymov
всегда вся обсуждение упирается на то что все пихают мне setinterval settimeout
Vitaly
а что тогда асинхронно?
реализация ее на сишечке в ноде(точнее в либюви), если говорить о fs.readFile
Anonymous
Луп типа решает, кто будет выполнятся, а код гоняется V8-interpreter
ikasymov
Че..?...
вот я это имел ввиду
ikasymov
main-stack
Egor
тогда вот тебе уточнение
Anonymous
Луп типа смотрящего в камере, а всю грязную работу делает либо Генсек параши (V8), либо зашквареные (libuv)
Egor
>node js event loop queue
Egor
>https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/
Egor
никакой там не стек, а очередь
Anonymous
>node js event loop queue
ты путаешь
Anonymous
main (call) stack
Anonymous
и message queue
Egor
не путаю я ничего
Anonymous
не путаю я ничего
Тогда диалог окончен
Egor
callback may be added to the poll queue to eventually be executed
Anonymous
Я же кидал
Anonymous
даже сюда
Anonymous
Anonymous
На, изучай
Egor
ну ты видимо в глаза е8-шся, если линк на оригинал тебя не устраивает
ikasymov
то есть самому никак не сделать асинхронный код? все упирается на методы
Sergey
я не нашел в нодовской документации про stack
Egor
там poll queue
Anonymous
Promise.resolve('lol').then(console.log)
Sergey
я так понимаю тут имеется ввиду стэк выполнения кода