【发布时间】:2017-04-20 00:56:00
【问题描述】:
当其他请求已经存在时,有办法取消订阅请求吗?
在我的情况下,我希望保持最后一个请求正常工作并取消可能的其他请求,因为每次 ngModel 更改时,都会启动一个请求。
我做了这样的事情:
onFieldChange(searchText: string) {
if(typeof request != 'undefined') request.unsubscribe();
let request = this.searchService.loadEntities(searchText)
.subscribe((resp: Search[]) => {
this.searchResults = resp;
})
}
在 Angular JS 中,这段代码可以正常工作。
if(typeof request == 'object') request.$cancelRequest();
对于 Angular 2 和 es6,我有一个错误“在声明之前使用了块范围的变量 'request'”。
我明白这一点,但我该怎么办?
【问题讨论】:
-
你意识到你在声明它之前已经使用了
request变量吗? -
是的,但我测试了它的类型,所以我测试
request变量是否像这样存在? -
你为什么不把它分配给一个字段呢?像
private request一样,您可以像this.request = ..一样分配给它 -
是的,我知道你的意思。但我会看到@YavokFain 的回复,这似乎最适合我的情况。谢谢
标签: angular ecmascript-6 observable