170 похожих чатов

Добрый вечер, вопрос к знатокам eventLoop в node.js почему после setImmediate

выполняется моем случае всегда раньше чем стадия i/o ?
сначала я запускаю вызов асинхронных операций, которые будет выполнять node api, дальше я выполняю перебор цикла, который блокирует основной поток, после его выполнения дело переходит в evemtLoop, поток блокируется на 50 секунд, и после этого я получаю таймер или immediate в начале, и всегде в конце коллбек с операции ввода вывода
хотя последовательность в идеале при задержке основного потока должна быть timeout, fs.readFile, immediate
когда прошел рассчет цыкла, за 50 секунд уже все асинхронно должно было быть выполнено, файл без блокирующего цикла вычитывается за 1-2 ms

49 ответов

67 просмотров

Так может просто долго читает файл?

Vitaliy- Автор вопроса
Алексей Попов
Так может просто долго читает файл?

Ну в теории он дольше читает естественно чем setImmediate, но я думал что за 50 секунд пока считает цикл, то паралельно будет вычитан файл , пройдет задержка тайм-аута ииммедейт и все это уже отдаст коллбеки в соответствующие стадии в ивент лупе, а стадия ввода вывода идет раньше чем стадия check в которой immediate

Vitaliy
Ну в теории он дольше читает естественно чем setIm...

Очень надёжный способ синхронизировать выполнение кода, ничего не скажешь (нет)

Vitaliy- Автор вопроса
Feanorx
Очень надёжный способ синхронизировать выполнение ...

Объясните что я делаю не так? Я не совсем понимаю эти тонкости

Vitaliy
Объясните что я делаю не так? Я не совсем понимаю ...

Давай по порядку, что ты хочешь сделать, напиши русским языком

Vitaliy- Автор вопроса
Feanorx
Давай по порядку, что ты хочешь сделать, напиши ру...

То что при нулевой задержке тайм-аута может выполнится тайм-аут первым, а иммедиейт вторым я понимаю. Добавил операцию ввода вывода, чтобы убедится что я понимаю последовательность выполнения в ивент лупе. Добавил блокировку основного потока чтобы убедится что пока он будет заблокирован асинхронные операции станут в очередь и выполнятся как я ожидаю

Vitaliy- Автор вопроса
][_ioN ‏ 😏
https://t.me/nodejs_ru/1018246

Тут некст тик, это ж не туда совсем

это намёк на макро- и микротаски. Вопрос на засыпку: console.xxx - синхронный?

Joe Beretta
В ноде вроде синхронный

https://stackoverflow.com/questions/5127532/is-node-js-console-log-asynchronous

Joe Beretta
В ноде вроде синхронный

Так то это я и так знал, интересно было на каком уровне у них Как пишут в ответах там low level работа с process.std out/err

Joe Beretta
В ноде вроде синхронный

Синхронный для вывода в файл или в терминал и асинхронный для передачи данных/вывода в пайп.

][_ioN ‏ 😏
это намёк на макро- и микротаски. Вопрос на засып...

я бы переформулировал вопрос - блокирующий io или не-

][_ioN ‏ 😏
Синхронный для вывода в файл или в терминал и асин...

То бишь мы можем перед логом прилепить await ?

Aleksandr Vyatkin
я бы переформулировал вопрос - блокирующий io или ...

в данном контексте, да, это более точная формулировка.

][_ioN ‏ 😏
Pino + transoprt + stream = 🔥

Почему пино а винстон

Максим
Почему пино а винстон

Легче (вроде как) + поддержка цветов из коробки.

][_ioN ‏ 😏
Легче (вроде как) + поддержка цветов из коробки.

Пино не с коробки поддерживает, там надо прилепить pino-pretty

Максим
Пино не с коробки поддерживает, там надо прилепить...

🤔 разве? Он же вроде только для форматирования..

][_ioN ‏ 😏
🤔 разве? Он же вроде только для форматирования..

Без pino-pretty мне в консольку выводило объект с данными

Максим
Без pino-pretty мне в консольку выводило объект с ...

Там через FORCE_COLORS='true' или как-то так можно. А так - да, по дефолту просто объект.

Остальными кстати не пользовался никогда

Максим
Остальными кстати не пользовался никогда

trace/debug, log - тоже иногда нужны.. Редко, но бывает.

Vitaliy- Автор вопроса
][_ioN ‏ 😏
это намёк на макро- и микротаски. Вопрос на засып...

Интересный вариант, хорошо, но получается если поток был заблокирован долго значит должно быть выполнение таймер, и/о, иммедиейт, и если логи даже асинхронные и это микротаски, все равно микротаска после и/о будет выполнена, а затем стадия check, так ведь?

Максим
Почему пино а винстон

По замерам, которые я видел года три назад, Винстон был очень печален, а пино бодр

Максим
Каким замерам?

Замерам скорости

Vitaliy
Интересный вариант, хорошо, но получается если пот...

А ответ на мой вопрос будет? Почему в логах отображаются миллисекунды, а ты говоришь о секундах?

Vitaliy- Автор вопроса
Алексей Попов
А ответ на мой вопрос будет? Почему в логах отобра...

Потому что я за компом пока заблокирован поток сижу примерно пол минуты, и результатам ни одного коллбека не появляется

Vitaliy- Автор вопроса
Vitaliy
Потому что я за компом пока заблокирован поток сиж...

А в логах тогда почему миллисекунды? Поставь логи непосредственно до и после цикла

Vitaliy
Интересный вариант, хорошо, но получается если пот...

У тебя есть setTimeout(1), fs.readFile(2), setImmediate(3) и for(4). Как по-твоему, в каком порядке тут будет выполнен код?

Vitaliy- Автор вопроса

извиняюсь, видимо был какой-то глюк что подвисло выполнение, выполняется за 50 мс с циклом почти мгновенно код

Vitaliy- Автор вопроса
Максим
Каким замерам?

Длины... логов. Шутка

https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick#setimmediate-vs-settimeout

Vitaliy- Автор вопроса

А ты замерял сколько времени занимает непосредственно чтение файла?

Vitaliy
я только оттуда

Тогда уровень два https://stackoverflow.com/questions/47724811/why-setimmediate-execute-before-fs-readfile-in-nodejs-event-loops-works

Feanorx
https://nodejs.org/en/docs/guides/event-loop-timer...

Вопрос в том, почему КБ иммедиэйта исполняется до КБ ридфайла

Vitaliy- Автор вопроса
Vitaliy
screenshot замерял, проблема в том что достаточно быстро

Феникс вроде нашёл ссылку с объяснением

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Не ну фпц - это уже просто троллинг какой-то. Элементарный код нельзя собрать. ЧЯДНТ? program Project1; {$mode delphi} uses SysUtils, Classes, Generics.Collections; var...
Peter
4
а где есть mysql cloud кроме яндекс-клауд?
Oleg Nosov
13
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
14
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
А кто-нибудь запихивал сборку перловых модулей/образов с perl приложениями в окружения без интернета (в специализированном CI/CD)? У меня сейчас есть ряд cpanfile, которые н...
Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
14
Кстати а покупал кто-нибудь ЭЦП для подписи кода? А то у меня на некоторых компах и ОС иногда SmartScreen винды программу за вирус принимал. Если купить такую ЭЦП и подписыват...
Дмитрий Завгородний
15
Карта сайта