Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用angular 4中的条件取消订阅_Angular_Rxjs - Fatal编程技术网

如何使用angular 4中的条件取消订阅

如何使用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

如何取消订阅typescript中有条件的订阅

我订阅了Angular4中的$http.get方法,现在我想在从服务器收到“no_more_data”后取消订阅。请告诉我怎么做

我所知道的所有方法,如TakeUtil、takewhile等,在这个可观察对象上都不可用

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