我在组件中有这个代码,我在控制台中看到的是这条消息:'来自组件1:任务开始'。所以它正在从服务中正确获取响应,但一旦完成,我想打印消息'成功!!'而这种情况从未发生过...... int*
完成后我该怎么做?
subscribe()
这是我服务中的代码:
onClick() {
this.service.announceMission('mission started');
this.service.missionAnnounced$.subscribe(response => console.log('from component 1: ' + response),
error => console.log('error: ', error),
() => console.log('successed!!'));
}
答案 0 :(得分:3)
直到您这样说,才能完成观察。
const mySource = new Subject<string>();
mySource.subscribe(
(value: string) => {console.log('value: ', value)},
(error: any) => {console.error(error)},
() => {console.log('completed')},
);
mySource.next('a');
mySource.next('b');
mySource.next('c');
subject.complete();
mySource.next('d');
输出:
value: a
value: b
value: c
completed
完成后不会写d
。
因此,对于您的情况,您应该添加一个completeMission()
函数来完成源主题。
completeMission() {
this.missionAnnouncedSource.complete();
this.missionConfirmedSource.complete();
}
并在你不
时调用它onOtherClick() {
this.service.completeMission();
}