Pull to refresh
6
0
Evgeny Kutovoy @jakut_bmstu

User

Send message

@yantishko Большое спсаибо! как подписчик твоего ТГ канала, считаю ты сделал очень крутой подгон. Особенно это важно сейчас.

Спасибо за статью! Подскажи, пожалуйста, что дает премиум подписка?

Касаемо третьей задачи, я согласен, выразился я не совсем ясно, и поэтому выглядит как опечатка или ошибка. Спасибо, исправлю.

"в момент выполнения executor'а регистрируется макротаска, при выполнении которой регистрируется микротаска"

именно это я и пытался сказать.

а что за сервис, позволяющий так посмотреть? или что-то самописное?

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

а вот если мы их сразу будем регистрировать как макрозадачи, то тогда все ок

ST1,1000
P1,1000
ST2,100
P2,2000
ST3,2000
P3,1000
ST4, 1000
P,5000

сортируем:

ST2
ST1
P1
P3
ST4
P2
ST3
P



Просто формулировка основной поток, она подразумевает сначала выполнение всех задач в основном потоке, потом уже микрозадачи, потом макрозадача, и повторяем. я понял, что вот этот момент что-то не улавливаю до конца. по факту, если у нас код типо такого,
console.log(1)
setTimeout(()=>console.log(2),0)
console.log(3)

То мы согласны, получим 1 3 2
Тк сначала выполнится основной поток, потом макрозадача

вот смотри. все таки я понимаю, что есть у нас недопонимание.

у нас в основном потоке получается все это "промисы";
P1, 1000
P2, 2000
P3, 1000
P, 5000

а в списке макрозадач
ST1, 1000
ST2, 100
ST3, 2000
ST4,1000

И если говорить, что основной поток последовательно пойдет в конец макрозадач, то мы получим

ST1, 1000
ST2, 100
ST3, 2000
ST4,1000
P1, 1000
P2, 2000
P3, 1000
P, 5000

отсортируем по времени задержки

ST2,100
ST1,1000
ST4,1000 ___неверно! (он должен идти после P3)
P1,1000
P3,1000
ST3,2000
P2,2000
P,5000

а вот если мы их сразу будем регистрировать как макрозадачи, то тогда все ок

ST1,1000
P1,1000
ST2,100
P2,2000
ST3,2000
P3,1000
ST4, 1000
P,5000

сортируем:

ST2
ST1
P1
P3
ST4
P2
ST3
P


Поправил. Однако знаешь, я вот не до конца понял момент. Ты говоришь, что они срабатывают в основном потоке. Ну тогда, это значит, что после их срабатывания, они должны будут также пойти в конец. А тут получается, что как только создается промис, он сразу уже уходит в макрозадачи, а уже от туда, переходит в микроазадачи.

Соглашусь, надо поправить, почему-то действительно биполярочка. Спасибо, что подметил!

не совсем понял, что ты имеешь ввиду под словом "не сходится". Порядок выполнения вроде верный.

Information

Rating
Does not participate
Registered
Activity