Skip to content

Commit 67dad73

Browse files
authored
Adjusted answer about NgZone; added answer about difference between Subject, BehaviorSubject, ReplaySubject and AsyncSubject (#22)
* Adjusted answer about NgZone * Adjusted answer about NgZone * Added answer about RxJS Subjects
1 parent f32b22e commit 67dad73

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

README.md

+16-3
Original file line numberDiff line numberDiff line change
@@ -1589,8 +1589,13 @@ export class CounterComponent {
15891589
<details>
15901590
<summary>Что такое ngZone?</summary>
15911591
<div>
1592-
<br>
1593-
Сервис внедрения зависимостей, который может работать вне Angular. Распространено использование этого сервиса для оптимизации производительности при запуске работы, состоящец из одной или нескольких асинхронных задач, которые не требуют обновления Angular-ом пользовательского интерфейса или обработки ошибок.
1592+
<br>
1593+
1594+
<a href="https://angular.io/api/core/NgZone">NgZone</a> - это сервис, который является обёрткой над zone.js, для выполнения кода внутри или вне зоны Angular. Этот сервис создаёт зону с именем angular для автоматического запуска обнаружения изменений, когда выполняются следующие условия:
1595+
<li>Когда выполняется синхронная или асинхронная функция</li>
1596+
<li>Когда нет запланированной микрозадачи в очереди</li>
1597+
1598+
<br>Наиболее распространённое применение NgZone — это оптимизация производительности посредством выполнения асинхронной логики вне зоны Angular (метод <code>runOutsideAngular</code>), тем самым не вызывая обнаружение изменений или обработку ошибок. Или наоборот, данный сервис может использоваться для выполнения логики внутри зоны (метод <code>run</code>), что в конечном итоге приведёт к тому, что Angular снова вызовет обнаружение изменений и при необходимости перерисует представление.
15941599
</div>
15951600
</details>
15961601

@@ -1782,7 +1787,15 @@ Change Detection Mechanism - продвигается только вперед
17821787
<details>
17831788
<summary>В чем разница между Subject, BehaviorSubject, ReplaySubject, AsyncSubject?</summary>
17841789
<div>
1785-
in progress..
1790+
<br>
1791+
1792+
<ul>
1793+
<li>Subject - не хранит свои предыдущие состояния, зритель получает информацию только тогда, когда Subject сгенерирует новое событие, используя метод <code>.next()</code>.</li>
1794+
<li>BehaviorSubject - при подписке поведенческий Subject уведомляет своего зрителя о последнем произошедшем в нём событии или, если в Subject-е не происходило событий, создаёт для зрителя событие с изначальной информацией, которая передаётся при создании Subject-а.</li>
1795+
<li>ReplaySubject - при подписке повторяющийся Subject уведомляет своего нового зрителя о всех произошедшем в нём событиях с момента создания. Для оптимизации при создании повторяющегося Subject-а можно передать число последних событий, которые будут повторяться для каждого нового зрителя. Стоит отметить, что создание ReplaySubject-а c числом повторяющихся событий равное 1 эквивалетно созданию BehaviorSubject-а.</li>
1796+
<li>AsyncSubject - асинхронный Subject уведомляет своих зрителей только о последнем произошедшем событии и только когда Subject успешно завершается. Если AsyncSubject завершится ошибкой, его зрители будут уведомлены только об ошибке.
1797+
</li>
1798+
</ul>
17861799
</div>
17871800
</details>
17881801

0 commit comments

Comments
 (0)