Lulz
21.08.2017
05:25:04
а то приложение падает с maximum call stack size
Zaur
21.08.2017
05:38:56
Таймураз
21.08.2017
05:43:23
А ещё в этой функции нет смысла
Google
Ilgiz
21.08.2017
05:44:11
я так для примера
Таймураз
21.08.2017
05:45:16
Не нужно на всё подряд вешать ключ async
Ilgiz
21.08.2017
05:45:43
я на всякие вешаю вдруг пригодиться
черем переписывать если нужен будет
Таймураз
21.08.2017
05:46:30
Если нужно будет переписать- перепишешь
А так- ты только замедляешь исполнение синхронного кода
Если у тебя будет много запросов- они все медленнее отработают
Ты исполнение вполне банальных вещей растягиваешь во времени
Смена контекста и тд происходит довольно быстро, но все равно проседание на нагрузках будет заметным
Да даже без нагрузки со сложной бизнес логикой разница будет заметна
Если взять абстрактный пример, в котором у тебя выполняется 100 вызовов функций синхронных, то только на промисах ты теряешь от 20мс на каждый запрос
Ilgiz
21.08.2017
05:53:08
Спасибо буду иметь ввиду
Petr
21.08.2017
06:23:51
Привет всем, во время сборки минифицируете нодовские файлы?
arts
21.08.2017
06:24:29
А смысл?
Petr
21.08.2017
06:26:52
Вообще нет его просто чтобы одной сборкой за раз все сделать
arts
21.08.2017
06:36:50
А что ты подразумеваешь под сборкой?
Google
Zaur
21.08.2017
06:37:59
Mikhail
21.08.2017
06:38:32
Petr
21.08.2017
06:41:58
Да уже спрашивали, ну типо во время сборки клиентского js, захватить серверный без склейки кшн и в папку с билдом положить
Vitaly
21.08.2017
06:42:53
А смысл?
arts
21.08.2017
06:46:38
Если не юзаешь es6 import'ы, серверный код в сборке вообще не нуждается.
Vitaly
21.08.2017
06:50:10
В пакете мог опечататься, но что-то похожее
arts
21.08.2017
06:51:32
Есть и babel/register, но в прод такое пускать не хочется.
Ilgiz
21.08.2017
08:09:56
Почему этот код будет выполняться не асинхронно?
forEach же возвращяет элемент колбеком, а колбек попадает в event loop
let a = [1, 2, 3, 4, 5];
a.forEach(elem=>{
console.log(elem)
})
Konstantin
21.08.2017
08:11:04
forEach ничего не возвращает
Ilgiz
21.08.2017
08:11:52
Konstantin
21.08.2017
08:12:17
не согласен, конечно )
Sergey
21.08.2017
08:12:49
Не всякий колбек колбекается ассинхронно
Konstantin
21.08.2017
08:12:57
forEach выполняет функцию для каждого элемента массива. Возвращает _ничего_
Ilgiz
21.08.2017
08:13:31
Sergey
21.08.2017
08:14:07
почему?
Потому что для ассинхронности нужно что то более чем вызов синхронной функции в цикле
Konstantin
21.08.2017
08:14:18
Ilgiz
21.08.2017
08:14:28
Sergey
21.08.2017
08:14:39
+
Ilgiz
21.08.2017
08:15:08
можете скинуть исходник forEach как он работает
Google
Ҫѐҏӗѫӑ
21.08.2017
08:16:57
каллбеки не обязаны выполняться асинхронно
для асинхронности нужен ввод-вывод
Konstantin
21.08.2017
08:17:33
Ilgiz
21.08.2017
08:18:58
Ҫѐҏӗѫӑ
21.08.2017
08:19:09
выше неасинхронный
Ilgiz
21.08.2017
08:19:33
я думал все функции при вызове попадают в event loop
Sergey
21.08.2017
08:21:24
функции да, но не все они выполняются асинфхронно
например если у тебя математика внутри функции, то она будет выполняться асинхронно и залочит event loop
Ҫѐҏӗѫӑ
21.08.2017
08:23:54
што
Sergey
21.08.2017
08:24:12
разве не так?
Sergey
21.08.2017
08:25:22
даже я не понял что это значит)
Sergey
21.08.2017
08:26:03
ну это значит что данная функция влюбом случае попадет в event loop, но при выполнение залочит его
Konstantin
21.08.2017
08:26:25
Парни, никакой магии в ноде нет. Не нужно пытаться усложнить, придумывая, что нода каким-то магическим образом определяет, что функция асинхронная, или что в ней есть математика, и таким образом включает или не включает её в евент-луп.
Sergey
21.08.2017
08:26:35
Звучало так будто математика задала асинхронность функции)
Sergey
21.08.2017
08:27:43
я некоректно выразился
насколько я знаю любая функция попадает в event loop, по другому она просто не выполнится
Парни, никакой магии в ноде нет. Не нужно пытаться усложнить, придумывая, что нода каким-то магическим образом определяет, что функция асинхронная, или что в ней есть математика, и таким образом включает или не включает её в евент-луп.
просто если в вашей функции есть синхронные операции, то пока они не выполнятся у вас движок будет занят выполнением этих операций
Nikolay
21.08.2017
08:32:04
Sergey
21.08.2017
08:32:52
почему?
Google
Ilgiz
21.08.2017
08:33:53
почему?
потому что он будет ждать пока очишется стэк
Nikolay
21.08.2017
08:34:16
вот здесь уже асинхронно, потому что попадает в event loop
Ilgiz
21.08.2017
08:35:21
без сэттайма можете показать мне асинхронный код
Nikolay
21.08.2017
08:35:23
даже если setTimeout 0 секунд
Egoarka
21.08.2017
08:36:55
Ilgiz
21.08.2017
08:37:27
есть стэк even loopa который берет и пушет на стэк js
Egoarka
21.08.2017
08:38:17
Че..?...
Vitaly
21.08.2017
08:38:35
Ilgiz
21.08.2017
08:39:45
Nikolay
21.08.2017
08:40:07
Vitaly
21.08.2017
08:40:11
fs.readFile
Nikolay
21.08.2017
08:40:14
Egoarka
21.08.2017
08:40:29
Ох, парни, тут просто треш в чате начинаете, лучше всем остановится, либо прочитать мат. часть
Vitaly
21.08.2017
08:41:00
https://www.youtube.com/watch?v=8aGhZQkoFbQ
Sergey
21.08.2017
08:41:08
https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/
Konstantin
21.08.2017
08:41:22
Эх, опередил =)
http://latentflip.com/loupe/
Sergey
21.08.2017
08:41:32
Event Loop Explained - там все описано кратко + удобная картинка
Google
Sergey
21.08.2017
08:42:37
там кстати и ответ, почему без сет таймаута такой порядок вывода в примере выше
Ilgiz
21.08.2017
08:43:10
тут не твоя функция асинхронная в fs.readFile
Konstantin
21.08.2017
08:43:32
https://youtu.be/8cV4ZvHXQL4?t=19m58s - вот про твой форич
Ilgiz
21.08.2017
08:44:56
вызов функции
всегда вся обсуждение упирается на то что все пихают мне setinterval settimeout
Vitaly
21.08.2017
08:47:54
Vlad
21.08.2017
08:48:29
Луп типа решает, кто будет выполнятся, а код гоняется V8-interpreter
Ilgiz
21.08.2017
08:48:59
main-stack
Egoarka
21.08.2017
08:49:55
тогда вот тебе уточнение
Ҫѐҏӗѫӑ
21.08.2017
08:50:01
Vlad
21.08.2017
08:50:05
Луп типа смотрящего в камере, а всю грязную работу делает либо Генсек параши (V8), либо зашквареные (libuv)
Egoarka
21.08.2017
08:50:05
>node js event loop queue
>https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/
никакой там не стек, а очередь
Vlad
21.08.2017
08:50:37