Angular 2 HttpClient 需要 .subscribe
Angular 2 HttpClient requires .subscribe
我传递了一个如下所示的方法:
add = (): Observable<MatDialogRef<W, any>> => {
let obs$ = this.service.getNew$().pipe(map(result => {
this.applyNewItemProperties(result);
return this.openDialog(result);
}));
obs$.subscribe();
return obs$;
}
getNew$()
本质上是对 return HttpClient.get<T>
.
的调用
我的问题是:这样可以吗?我不需要订阅,除非没有它,get
不会触发。我需要在某个地方 unsubscribe()
吗?我错过了更好的模式吗?
您需要在某处进行订阅,因为没有订阅,您的可观察对象仍然冷。 Observable 是懒惰的,它们不会工作直到有人关心答案(使它们 hot)。所以是的,它没问题(并且是预期的)虽然我会质疑为什么链上没有订阅 obs$
鉴于你正在返回它。
严格来说,您不需要 unsubscribe
,因为这两种方法都应该完成它们的 Observable
。如果 Observable 仍然很热但您不再关心结果,您只需要 取消订阅。
我传递了一个如下所示的方法:
add = (): Observable<MatDialogRef<W, any>> => {
let obs$ = this.service.getNew$().pipe(map(result => {
this.applyNewItemProperties(result);
return this.openDialog(result);
}));
obs$.subscribe();
return obs$;
}
getNew$()
本质上是对 return HttpClient.get<T>
.
我的问题是:这样可以吗?我不需要订阅,除非没有它,get
不会触发。我需要在某个地方 unsubscribe()
吗?我错过了更好的模式吗?
您需要在某处进行订阅,因为没有订阅,您的可观察对象仍然冷。 Observable 是懒惰的,它们不会工作直到有人关心答案(使它们 hot)。所以是的,它没问题(并且是预期的)虽然我会质疑为什么链上没有订阅 obs$
鉴于你正在返回它。
严格来说,您不需要 unsubscribe
,因为这两种方法都应该完成它们的 Observable
。如果 Observable 仍然很热但您不再关心结果,您只需要 取消订阅。