Size: a a a

JavaScript Noobs — сообщество новичков

2021 April 30

D

Danila in JavaScript Noobs — сообщество новичков
Упрощённо, дело обстоит так - сам жс синхронен и однопоточен. Есть стек, он выполняет команды одну за другой, и каждая из них "ждёт" предыдущую

Потом мы берём этот жс и его движок и запускаем где-то, например, в браузере или на сервере (node)

Сервер или браузер предоставляют некое api, например, дляработы с DOM, сетевых запросов, отслеживния событий и так далее.  Некоторые из них должны быть асинхронны by design, то есть, не вешать стек намертво пока идёт выполнение. Например, как раз запросы или работа с событиями. Для этого браузер или нода реализуют внутри себя механизм event loop, который просто может в определённый момент выплюнуть в стек какую-то функцию для того чтобы она синхронно выполнилась

Получается так - ты говоришь браузер, сделай голубчик запросец фоном а когда закончишь плюнь мне в стек вот эту функцию

zaprosec().then(funkciya)

Такой вызов запустит запрос, и код пойдёт выполняться дальше. А вот когда придёт время (запрос закончится) - браузер плюнет в стек твою function и она пойдёт уже выполняться
источник

D

Danila in JavaScript Noobs — сообщество новичков
Там есть тонкости, таски, микротаски и прочие фазы рендера, про это можно погуглить, но в целом примерно так
источник

D

Danila in JavaScript Noobs — сообщество новичков
Ну и главное что тут есть - жс как язык и как спека ничего не знает ни про какие запросы )
источник

D

Danila in JavaScript Noobs — сообщество новичков
Это уже браузер решил дать апиху
источник

КК

Ксяу Ка in JavaScript Noobs — сообщество новичков
хм... красавчик
источник

A

Alexander in JavaScript Noobs — сообщество новичков
Да я думал, что прокатит, если сделаю несколько изменений в коде, особо не углублясь в тонкости. Что-то менять получалось по мелочи, например, изменить очередность типов авторизации и пр, а когда дело дошло до добавления собственного кода, застрял.
Хотя видел на сайте реакта туториал. Напрасно его проигнорировал))
источник

КК

Ксяу Ка in JavaScript Noobs — сообщество новичков
*что бывает в реакте без знаний натива*
источник

A

Alexander in JavaScript Noobs — сообщество новичков
И, причем, просто читая код, понимаешь, что там происходит, но когда углубляешься, становится ясно, что ни черта не понятно.
источник

A

Alexander in JavaScript Noobs — сообщество новичков
А на работе сказали "не переживай, зато новый скилл обретешь"🤦‍♂️
источник

D

Danila in JavaScript Noobs — сообщество новичков
А, ну чтобы уже точно до конца тему довести - в браузере есть тонкость. Пока стек не очистится -

1) Браузер не может отрисовать изменения
2) Ни одна из задач "братан сделай то-то и выполни потом вот это" не будет выполнена.

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

Так вот когда ты делаешь синхронный запрос и говоришь "делай запрос и пока не пройдёт не иди дальше по стеку" - браузер зависает, потому что пока стек не очистится он ничего делать не может. А если запрос идёт 10 секунд? Получаешь 10 секунд мёртвого браузера
источник

КК

Ксяу Ка in JavaScript Noobs — сообщество новичков
F
источник

D

Danil in JavaScript Noobs — сообщество новичков
вау...
источник

A

Alexander in JavaScript Noobs — сообщество новичков
Понял👍
источник

D

Danila in JavaScript Noobs — сообщество новичков
чё
источник

D

Danil in JavaScript Noobs — сообщество новичков
это не сарказм если что, я реально удивлен
источник

D

Danil in JavaScript Noobs — сообщество новичков
если точнее, то восхищен
источник

D

Danila in JavaScript Noobs — сообщество новичков
В смысле, чем? )
источник

D

Danil in JavaScript Noobs — сообщество новичков
уже вторую статью пишешь в чат просто
и просто тем, что помогаешь всем
источник

D

Danila in JavaScript Noobs — сообщество новичков
Уже сто вторую )
источник

D

Danila in JavaScript Noobs — сообщество новичков
Ну бывает иногда, да
источник