Size: a a a

2020 September 21

AO

Alex Okrushko in Angular Kyiv
Alex Ьтьь
в теории еще тот планировщик который под очередь рендиеринга с requestAnimationFrame ложится, хорошо зайдет под всякие ДОМ обновления и анимации (если пофиксили с ним баги некоторые)
мы обсуждали это с Nicholas Jamieson из RxJS команды.
Он потом еще статью написал (частично по этому поводу):
The animationFrameScheduler probably shouldn't be one either - which is why Ben created the animationFrames observable.

для animationFrame лучше Observable использовать, а не scheduler.
источник

Sergey Фrolov in Angular Kyiv
Ну и там не onpush, на более менее сложном проекте будет ад
источник

Sergey Фrolov in Angular Kyiv
Alex Okrushko
мы обсуждали это с Nicholas Jamieson из RxJS команды.
Он потом еще статью написал (частично по этому поводу):
The animationFrameScheduler probably shouldn't be one either - which is why Ben created the animationFrames observable.

для animationFrame лучше Observable использовать, а не scheduler.
Ну у вас в push он вроде и используется
источник

AO

Alex Okrushko in Angular Kyiv
вот статья от него (по requestIdle, я тоже задумывался может scheduler для него нужен): https://ncjamieson.com/how-to-use-requestidlecallback/
источник

AO

Alex Okrushko in Angular Kyiv
Такой доступ с nested values будет мотивировать структуризацию данных для удобства считывания, что часто не самый лучше подход :) Главное не разность derived state - дупликация данных получится.
Селекторы нужны ведь не только для развертывания nested values :)

Но согласен, что подход интересный. Мне нравятся такие эксперименты :)
источник

Sergey Фrolov in Angular Kyiv
Да, тут скорее про удобный доступ. Чем про замену селекторам и вообще хоть какой-то сложной логике.
источник

AO

Alex Okrushko in Angular Kyiv
Sergey Фrolov
Да, тут скорее про удобный доступ. Чем про замену селекторам и вообще хоть какой-то сложной логике.
Да, согласен.
Я к тому, что удобный доступ может мотивировать другую структуру данных (если будет оптимиция именно для более удобного доступа)
источник

AO

Alex Okrushko in Angular Kyiv
Но мне нравится идея все равно - тут что-то есть :)
источник

AO

Alex Okrushko in Angular Kyiv
Sergey Фrolov
Ну у вас в push он вроде и используется
В ngrx/template?
источник

Sergey Фrolov in Angular Kyiv
Alex Okrushko
В ngrx/template?
Ага
источник

AO

Alex Okrushko in Angular Kyiv
Я сдался там 🙂 очень много из меня энергии было высосано было. Мы до какого-то момента довели, а дальше Майкл перешёл на свой репо.
Про эти пайпы вообще отдельная тема. Я пока не советую их использовать, потому что мне кажется у нас есть более интересный подход для Зонлесс чем замена каждого async пайпа на что-то другое. Но это отдельный разговор.
источник

AO

Alex Okrushko in Angular Kyiv
ngrx/component 🤦‍♂️ не template сорри 🙂
источник

Sergey Фrolov in Angular Kyiv
Alex Okrushko
Я сдался там 🙂 очень много из меня энергии было высосано было. Мы до какого-то момента довели, а дальше Майкл перешёл на свой репо.
Про эти пайпы вообще отдельная тема. Я пока не советую их использовать, потому что мне кажется у нас есть более интересный подход для Зонлесс чем замена каждого async пайпа на что-то другое. Но это отдельный разговор.
Да, понимаю.
Я уже заводил на них довольно большой проект без зоны.
Но то что это эксперементально в каких-то режимах – понятно.
Ну и ждём вашей реализации.
источник

Sergey Фrolov in Angular Kyiv
Хотя мой вопрос был в контексте animationFrame в разрезе push-пайпа
источник

AO

Alex Okrushko in Angular Kyiv
Sergey Фrolov
Хотя мой вопрос был в контексте animationFrame в разрезе push-пайпа
в ngrx/component animationFrame не используется. Он в rx-angular используется как-то
https://github.com/rx-angular/rx-angular/blob/8fed7b2a78166f9fcb704a579259c956ef2b0475/libs/template/src/lib/render-strategies/rxjs/scheduling/animationFrameTick.ts#L4
источник

Alex Ьтьь in Angular Kyiv
Alex Okrushko
мы обсуждали это с Nicholas Jamieson из RxJS команды.
Он потом еще статью написал (частично по этому поводу):
The animationFrameScheduler probably shouldn't be one either - which is why Ben created the animationFrames observable.

для animationFrame лучше Observable использовать, а не scheduler.
Ну тогда список планировщиков както неполно выглядит
источник

Alex Ьтьь in Angular Kyiv
Понятно что можно все и без них делать, нативно даже через сеттаймаут, промисы либо quequeMicrotask и requestAnimationFrame,

Но раз с помощью планировщиков предоставили такой вот доступ в стиле rxjs к вышеуказанным очередям - микротасков, макротасков, то почему бы и к очереди рендеринга тоже не дать такую возможность?
источник

Alex Ьтьь in Angular Kyiv
Alex Okrushko
Вот еще пример с asapScheduler - отложить комбинацию значений из разных Обзервабл в следующий микротакс.
combineLatest комбинирует значения, но даже если значения исходят от одного и того же источники и выстреливают в одного и тоже время, всё равно будет 2 эмита.
https://stackblitz.com/edit/rxjs-hhqedk

Похожий трюк я использую в селекторах ComponentStore (если debouce: true передано):
https://ngrx.io/guide/component-store/read#debounce-selectors
Спасибо, гляну, очень интересно будет изучить
источник

Sergey Фrolov in Angular Kyiv
Со всем этим инструментарием это все ближе к реактивскому файберу
источник

Alex Ьтьь in Angular Kyiv
Sergey Фrolov
Ну как по мне, совсем не аналог. Потому как на state.a|b|c ты все равно не подпишешься отдельно. Он просто тебе через set запустит компонент update – насколько я знаю.
Да и тут без привязки к фреймворку
Ну мне тоже на аналог похоже в плане идеи что реакт отходил от классово-ориентированного подхода при выполнении каких-либо операций над стейтом в сторону более легковесных и читаемых функций.

Какой-либо подход в духе ангуля / джавы классов делал бы тоже самое только на классах.

То есть можем делать чтото с помощью класса, ООП либо с помощью функий аля ФП
источник