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

Ещё раз плиз, как это работает? что в этом коде запускает

detectChange?
ведь setTimeout отработал до того, как выставился флаг markForCheck. Почему ангуляр всё равно на него реагирует?
https://stackblitz.com/edit/stackblitz-starters-b5lzwv?description=An%20angular-cli%20project%20based%20on%20@angular/animations,%20@angular/common,%20@angular/compiler,%20@angular/core,%20@angular/forms,%20@angular/platform-browser,%20@angular/platform-browser-dynamic,%20@angular/router,%20core-js,%20rxjs,%20tslib%20and%20zone.js&file=src%2Fmain.ts&title=Angular%20Starter

15 ответов

21 просмотр

Так вы в сет тайм-ауте делаете то, что дёргает компонент Если там будет не работа с cd, то компонент не увидит

Глеб-Щукин Автор вопроса
Максим Федоров
Так вы в сет тайм-ауте делаете то, что дёргает ком...

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

код внутри settimeout будет выполнен ДО cd

Глеб-Щукин Автор вопроса
Evgheni Чернявский
код внутри settimeout будет выполнен ДО cd

вот этот момент я не улавливаю. как такое может быть?

Глеб-Щукин Автор вопроса

если cd тут вызывает только само событие setTimeout

Глеб Щукин
если cd тут вызывает только само событие setTimeou...

просто как факт примите, внутренности зоны вам знать не нужно сначала handler потом cd

Глеб-Щукин Автор вопроса
Evgheni Чернявский
просто как факт примите, внутренности зоны вам зна...

ок, приму что если при onPush написать что то вроде setTimeout(() => this.cdr.detectChanges();, то detectChanges вызовится дважды

Глеб Щукин
ок, приму что если при onPush написать что то врод...

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

Ilya Chursin
лучше бы вообще зону выпилить - это да)))

ну зона то уйдёт, главное народу сказать что халява с текущим дефолтом больше не будет то что щас делается через rxjs + async pipe + onpush, то +- будет выглядеть также через сигналы но уже как ДЕФОЛТ новый

Глеб Щукин
если cd тут вызывает только само событие setTimeou...

cd вызывает фреймворк, после отработки всех хэндлеров. setTimeout и т.п. формируют пул тасок. Они при выполнении что-то делают, состояние меняют. Когда все выполнились и пул пустой, пришло время проверить что поменялось в приложении и отрисовать.

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта