на angular 12, тоже поведение. Есть компоненты js, который запускается через runOutsideAngular. Приложение стало зависать, по профайлеру понял, что несмотря на runOutsideAngular сторонний компонент тригерит zone js. Открыл тот компонент на Github и у него есть метод forceUpdate, которые дергается через Promise then.
Я думал, что при runOutsideAngular это не триггерит зону. после 10 версии что-то поменялось?
я видел тут тоже кто-то задавал подобные вопросы при работе со сторонними js либами и падением перфоманса.
В доке angular:
"Любые будущие задачи или микрозадачи, запланированные в runOutsideAngular, будут продолжать выполняться за пределами зоны Angular."
Интересный вопрос. Я таких изменениях не слышал. Уверен, что раньше было действительно вне зоны, а теперь стало в зоне?
да мы работали с таким подходом с 7 версии Angular. Сидел перелистывал статьи про зону. Нашел issue https://github.com/angular/angular/issues/41506 проблема у кого сторонние библиотеки, как у нас. Мы решили свой вопрос переделав библиотеку, которую подключаем. Но все же это инересно, не хотелось бы столкнуться с тем, что подключив что-то на js, и там дернут Promise.Resolve ( создадут микротаск) заденут зону. Я пробовал переходить на Angular 12, но там такое же поведение с RunOutSideAngular.
Попробуй отключить патчинг промисов зоной или переходи на «другой» UI кит 😎
Обсуждают сегодня