如何使用angular 4中的条件取消订阅
如何取消订阅typescript中有条件的订阅 我订阅了Angular4中的$http.get方法,现在我想在从服务器收到“no_more_data”后取消订阅。请告诉我怎么做 我所知道的所有方法,如TakeUtil、takewhile等,在这个可观察对象上都不可用如何使用angular 4中的条件取消订阅,angular,rxjs,Angular,Rxjs,如何取消订阅typescript中有条件的订阅 我订阅了Angular4中的$http.get方法,现在我想在从服务器收到“no_more_data”后取消订阅。请告诉我怎么做 我所知道的所有方法,如TakeUtil、takewhile等,在这个可观察对象上都不可用 getFiles(): any { return http.post } getFiles(). // here no takeWhile and takeUntil are getring allowed then ho
getFiles(): any {
return http.post
}
getFiles(). // here no takeWhile and takeUntil are getring allowed then how do I unsubscribe.
您可以使用
takeWhile
操作符在无更多数据到达时自动关闭流
$http.get(...)
.map(...)
.takeWhile((e) => e != "no_more_data")
.subscribe(...)
另请参见这里有几点:
首先,Angular中来自Http的observable发出一个Http请求,因此,如果只是一个Http调用,则无需取消订阅,除非您是从其他重复的东西触发它
其次,您提到的部分,返回http.post
显然是不完整的。我不知道这是否只是为了在问题中发布,或者你的真实代码是这样的。您的问题可能是返回函数http.post
,而不是调用它
检查您的实际代码1)是否调用了方法http.post(/*此处的一些参数/*)
,当然2)是否返回了该调用的结果。将鼠标悬停在调用http.post()
的方法上,以确保返回类型是可观察的
最后,如果您仍然无法找到takeWhile
或takeUntil
的话,另一个潜在的小问题是它可能根本就不会被导入。您可能需要将import'rxjs/add/operator/takeWhile
或`'rxjs/add/operator/takeUntil``添加到使用它的文件的开头。您可以显示到目前为止您到底尝试了什么吗?什么是$http.get
?你在用AngularJS吗?您的问题标记为Angular。很抱歉,我最近在Angular 1之后开始使用Angular 4,因此错误地键入了$http