Nic*_*.Xu 10 javascript rxjs angular
我正在通过这本官方食谱学习Angular2 .
以下代码突然出现.为什么"missionAnnounced $"没有变量声明?让missionAnnounced $ = ...下面代码的逻辑是什么?
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs/Subject';
@Injectable()
export class MissionService {
// Observable string sources
private missionAnnouncedSource = new Subject<string>();
private missionConfirmedSource = new Subject<string>();
// Observable string streams
missionAnnounced$ = this.missionAnnouncedSource.asObservable();
missionConfirmed$ = this.missionConfirmedSource.asObservable();
// Service message commands
announceMission(mission: string) {
this.missionAnnouncedSource.next(mission);
}
confirmMission(astronaut: string) {
this.missionConfirmedSource.next(astronaut);
}
}
Run Code Online (Sandbox Code Playgroud)
Pau*_*tha 21
一个Observable
只允许用于订阅,而Subject
允许两者发布和订阅(受试者是可观察到的).因此,使用a Subject
可以将您的服务用作发布者和订阅者.
@Component({})
class ComponentOne {
constructor(private service: MissionService) {}
onClick() {
service.announceMission('mission started');
}
}
@Component({})
class ComponentTwo {
constructor(private service: MissionService) {
service.missionAnnounced$.subscribe(mission => console.log(mission))
}
}
@Component({})
class ComponentThree {
constructor(private service: MissionService) {
service.missionAnnounced$.subscribe(mission => console.log(mission))
}
}
Run Code Online (Sandbox Code Playgroud)
现在,每个想要订阅宣布任务的人都可以订阅.该ComponentOne
会是一个发射任务宣布事件.
为什么"missionAnnounced $"没有变量声明?
确实如此.missionAnnounced$
是变量名称,Subject
以其可观察的形式分配.类成员变量不使用let
以下代码的逻辑是什么?
订阅者订阅了observable($
变量),而发布者调用了announceMission
和confirmMission
.所有订阅者missionAnnounced$
和missionConfirmed$
分别将收到这些活动.
归档时间: |
|
查看次数: |
13334 次 |
最近记录: |