【发布时间】:2017-10-06 20:10:52
【问题描述】:
我正试图弄清楚如何在 Angular2 中的方法获得特定响应时取消订阅该方法。
settings.component.ts
这是我的组件内部有问题的方法,this.selectedBridge 的值只是一个以 IP 地址为值的字符串。
public connectToBridge() {
this._hueService.connectToBridge(this.selectedBridge)
.subscribe(bridgeResponse => { this.bridgeResponse = bridgeResponse });
}
bridgeresponse.model.ts
这是我在 hue.service 中映射到的模型。
export interface BridgeResponse {
error: Error;
success: Success;
}
export interface Error {
type: string;
address: string;
description: string;
}
export interface Success {
username: string;
}
hue.service.ts
connectToBridge(bridgeIp) {
return Observable.interval(2000).flatMap(() => {
return this.http.post('http://localhost:54235/api/hue/ConnectToBridge',
JSON.stringify(bridgeIp),
{ headers: this.headers })
.map(response => <BridgeResponse>response.json());
});
如您所见,我使用 observable 每 2 秒轮询一次 API 端点以检查响应是否已更改,是否有更好的方法来执行此操作?本质上,当模型内部的成功值不为空时,我想取消订阅该方法并停止它每 2 秒轮询一次。
此外,正如我使用 .NET Core 和 WebApi 构建 API 的一些额外信息一样。
【问题讨论】:
-
您还需要在
ngOnDestroy()中取消订阅。 This post 有一个比直接取消订阅更好的选择来取消订阅。
标签: angular typescript rxjs