Angular의 BehaviorSubject 및 Observable
-
Angular에서
BehaviorSubject
와Observable
의 주요 차이점 -
Angular에서
Observable
이란? -
Angular에서
BehaviorSubject
란 무엇입니까? -
Angular에서
BehaviorSubject
의 예
Angular BehaviorSubject
는 Observable
소스에서 방출된 마지막 값을 방출하는 주제입니다. 대조적으로 observable
은 시간이 지남에 따라 값을 방출하는 데 사용됩니다.
Angular는 이를 사용하여 HTTP 요청이나 사용자 입력과 같은 이벤트 또는 데이터 스트림을 처리합니다. 또한 일반적으로 관찰자가 개체의 상태 변경에 대해 알려야 할 때 사용됩니다.
구체적으로 BehaviorSubject
와 Observable
의 차이점에 대해 알아보겠습니다.
Angular에서 BehaviorSubject
와 Observable
의 주요 차이점
BehaviorSubject
는 정의된 기능이 있는 Angular Observable
입니다. 이론적으로 Observable
의 하위 유형입니다. Observable
은 일반적입니다. 주체는 BehaviorSubject
의 도움으로 옵저버블을 구성하는 데 사용할 수 있습니다.
주요 차이점은 next()
메소드를 사용하여 관찰 가능 항목에 데이터를 전달할 수 없다는 것입니다.
Angular Observable
과 BehaviorSubject
의 기본 개념에 대해 논의해 보겠습니다.
Angular에서 Observable
이란?
Angular 애플리케이션에서 RxJS
는 옵저버블을 제공합니다. Observable은 작성자와 사용자 간의 데이터 공유를 용이하게 합니다.
‘Observable’은 이벤트 관리, 비동기 컴퓨팅 및 여러 속성 관리를 위한 더 나은 전략입니다.
Observables
의 독특한 측면은 구독한 소비자가 구성 요소를 구현하지 않는 것처럼 구독한 사용자만 이를 처리할 수 있다는 것입니다. 사용자는 구독하기 전까지만 업데이트를 받을 수 있습니다.
Angular에서 BehaviorSubject
란 무엇입니까?
일반적으로 주제는 세 가지 방식으로 구현되며, 각각은 서로 다른 기능을 제공하며 다양한 응용 프로그램에 적용할 수 있습니다.
ReplaySubject
: 이 개체는 푸시된 모든 값을 추적합니다. 소스에서 내보낸 모든 항목을 구독한 모든 관찰자에게 배포합니다.BehaviorSubject
: 현재 값을 저장하는 항목입니다.BehaviorSubject
를 구독하는 관찰자는 그렇게 하는 동안 시간이 지남에 따라 값을 받게 됩니다.AsyncSubject
: 가장 최근 값을 저장하고 시퀀스가 끝날 때마다 전송합니다.
Angular의 ‘BehaviorSubject’를 사용하면 ‘Observable’에 값을 보내고 검색할 수 있습니다. 예를 들어 접근 제어 상태는 진화하는 값을 제공하는 ‘BehaviorSubject’입니다.
이 시나리오에서 BehaviorSubject
의 주요 목표는 모든 사용자가 최종 값을 받도록 하는 것입니다.
구독 시 항상 값을 제공해야 하므로 다음 값을 획득하지 않은 경우에도 동작 주제에는 시작 값이 필요합니다. 구독 시 주제의 가장 최근 값을 반환합니다.
getValue()
메소드는 관찰 불가능한 코드에서 주제의 마지막 값에 언제든지 액세스하는 데 사용할 수 있습니다.
또한 초기 상태를 반영하기 위해 BehaviorSubject
함수 Object()
에 인수가 제공됩니다. 상태에 대한 요구 사항이 설정되고 추가 구독이 이루어지면 BehaviorSubject
는 가장 최신 상태를 먼저 제공합니다.
Angular에서 BehaviorSubject
의 예
위에서 언급한 논의를 더 잘 이해하기 위해 예제를 논의해 보겠습니다.
App.component.ts
:
import { Component } from "@angular/core";
import { BehaviorSubject } from "rxjs";
interface Directory {
name: string;
id: string;
}
@Component({
selector: "my-app",
templateUrl: "./app.component.html",
styleUrls: ["./app.component.css"]
})
export class AppComponent {
name: string;
id: string;
directories: BehaviorSubject<Directory[]> = new BehaviorSubject<Directory[]>(null);
constructor() {
this.directories.next([
]);
}
add() {
const currentItems = this.directories.getValue();
currentItems.push({ name: this.name, id: this.id });
}
delete() {
const currentItems = this.directories.getValue();
const itemsWithoutDeleted = currentItems.filter(d => d.id !== this.id);
this.directories.next(itemsWithoutDeleted);
}
}
App.component.html
:
<h1>Example of Angular BehaviorSubject</h1>
<h3>Write anything in the box that you want to add in the directory list.</h3>
<ul>
<li *ngFor="let directory of (directories | async)">
{{ directory.name }}
</li>
</ul>
<input type="text" [(ngModel)]="name" size="20" />
<br/>
<br/>
<button (click)="add()">Add</button>
<br/>
<br/>
<button (click)="delete()">Delete</button>
<hr />
BehaviorSubject
는 소스 Observable
이 내보낸 마지막 값을 내보냅니다. 이는 특정 기간 동안 최신 값을 유지해야 하는 경우에 유용할 수 있습니다.
Observable
은 데이터 세트의 모든 변경 사항을 알아야 하지만 새 값으로 데이터를 업데이트할 때 BehaviorSubject
만큼 효율적이지 않을 때 유용합니다.
코드의 라이브 데모를 확인하려면 여기를 클릭하십시오.
Muhammad Adil is a seasoned programmer and writer who has experience in various fields. He has been programming for over 5 years and have always loved the thrill of solving complex problems. He has skilled in PHP, Python, C++, Java, JavaScript, Ruby on Rails, AngularJS, ReactJS, HTML5 and CSS3. He enjoys putting his experience and knowledge into words.
Facebook