Angular 如何摧毁一个可观测的
我已经在我的服务中建立了一个可观察的,以便每2秒轮询一次API的更新;可观察的是持久的,但当我移动页面或调用不同的结果时,我需要销毁它 是否有人可以帮助您在页面退出时或作为手动请求(例如,从另一个API调用)销毁可观察对象Angular 如何摧毁一个可观测的,angular,typescript,rxjs,Angular,Typescript,Rxjs,我已经在我的服务中建立了一个可观察的,以便每2秒轮询一次API的更新;可观察的是持久的,但当我移动页面或调用不同的结果时,我需要销毁它 是否有人可以帮助您在页面退出时或作为手动请求(例如,从另一个API调用)销毁可观察对象 您可以使用RxJS中的takeUntil。takeUntil将停止订阅。 请参见下面的示例 class myComponent { private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1
您可以使用RxJS中的
takeUntil
。takeUntil将停止订阅。
请参见下面的示例
class myComponent {
private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);
ngOnInit() {
return Observable.interval(2000).switchMap(() => {
return super.doRequest('/audit/api/' + this.API_version + '/Query/GetFlowHistory?sagaId=' + sagaId, 'get', {}).map((responseData) => {
return responseData
});
}).takeUntil(this.destroyed$)
}
destroy() {
this.destroyed$.next(true);
this.destroyed$.complete();
}
}
类myComponent{
private destromed$:ReplaySubject=新ReplaySubject(1);
恩戈尼尼特(){
返回可观察。间隔(2000)。开关映射(()=>{
返回super.doRequest('/audit/api/'+this.api_version+'/Query/GetFlowHistory?sagaId='+sagaId,'get',{}).map((responseData)=>{
返回响应数据
});
}).takeUntil(此.destromed$)
}
销毁{
此.next(true)已销毁$;
此.complete$.complete();
}
}
您可以使用RxJS中的takeUntil
。takeUntil将停止订阅。
请参见下面的示例
class myComponent {
private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);
ngOnInit() {
return Observable.interval(2000).switchMap(() => {
return super.doRequest('/audit/api/' + this.API_version + '/Query/GetFlowHistory?sagaId=' + sagaId, 'get', {}).map((responseData) => {
return responseData
});
}).takeUntil(this.destroyed$)
}
destroy() {
this.destroyed$.next(true);
this.destroyed$.complete();
}
}
类myComponent{
private destromed$:ReplaySubject=新ReplaySubject(1);
恩戈尼尼特(){
返回可观察。间隔(2000)。开关映射(()=>{
返回super.doRequest('/audit/api/'+this.api_version+'/Query/GetFlowHistory?sagaId='+sagaId,'get',{}).map((responseData)=>{
返回响应数据
});
}).takeUntil(此.destromed$)
}
销毁{
此.next(true)已销毁$;
此.complete$.complete();
}
}
如果您退订了怎么办?如果您退订了怎么办?可能会重复您的建议?非常感谢!特别是相关的例子很好的建议非常感谢!特别是相关的例子