rxjs和angular 2,跟踪并能够取消多个同时进行的服务器调用

rxjs和angular 2,跟踪并能够取消多个同时进行的服务器调用,angular,rxjs,Angular,Rxjs,我需要对多个远程服务器进行X次呼叫,并且我需要能够跟踪响应的服务器和未响应的服务器。以及能够取消所有挂起的呼叫 其思想是在给定的服务器列表阵列上循环,并使用switchMap来取消 这是我到目前为止得到的代码: private listenFetchBusinessUser() { this.businessesRequest$ = new Subject(); this.unsub = this.businessesRequest$ .map(

我需要对多个远程服务器进行X次呼叫,并且我需要能够跟踪响应的服务器和未响应的服务器。以及能够取消所有挂起的呼叫

其思想是在给定的服务器列表阵列上循环,并使用
switchMap
来取消

这是我到目前为止得到的代码:

private listenFetchBusinessUser() {         
    this.businessesRequest$ = new Subject();
    this.unsub = this.businessesRequest$
        .map(v=> {
            return v;
        })
        .debounceTime(100)
        .switchMap((values:{servers:Array<string>, dispatch:(value:any)=>any}):any => {
            if (values.servers.length == 0)
                return 'CANCEL_PENDING_NET_CALLS';
            var dispatch = values.dispatch;

            return values.servers.map(i_source => {
                var url:string = `http://${i_source}/WebService/StationService.asmx/getSocketStatusList?i_businessList=123`;
                return this._http.get(url)
                    .map(result => {
                        console.log(result);
                    }).subscribe((res)=> {
                    }, err=> {
                        console.log(err);
                    }, ()=> {
                        console.log();
                    });            
             })

        }).share()
        .subscribe();
}


public fetchBusinessUser(servers:Array<string>) {
   return (dispatch) => {
      this.businessesRequest$.next({servers: servers, dispatch: dispatch});
   };
}
private listenFetchBusinessUser(){
this.businessRequest$=新主题();
this.unsub=this.businessRequest$
.map(v=>{
返回v;
})
.debounceTime(100)
.switchMap((值:{servers:Array,dispatch:(值:any)=>any}):any=>{
if(values.servers.length==0)
返回“取消挂起的网络呼叫”;
var dispatch=values.dispatch;
返回值.servers.map(i_source=>{
var url:string=`http://${i_source}/WebService/StationService.asmx/getSocketStatusList?i_businessList=123`;
返回此。\u http.get(url)
.map(结果=>{
控制台日志(结果);
}).订阅((res)=>{
},err=>{
控制台日志(err);
}, ()=> {
console.log();
});            
})
}).share()
.subscribe();
}
公共fetchBusinessUser(服务器:阵列){
返回(发送)=>{
this.businessRequest$.next({servers:servers,dispatch:dispatch});
};
}
因此,我将使用服务器列表调用fetchBusinessUser,它将使用主题通过流将http调用推送到

但到目前为止,我得到了一个错误:

异常:TypeError:无法读取属性“Symbol(Symbol.iterator)” 未定义的

当我尝试运行返回
this.\u http.get(url)


我对如何使用rxjs来处理这个需求的任何(更好的)想法都持开放态度。。。基本上可以呼叫多个服务器,跟踪挂起的呼叫,并可以强制取消所有操作…

您在
开关映射中似乎没有返回任何内容
…发送评论,是的,您是对的,我已修复,不再出现错误。。。德克萨斯州!!然而,我确实需要在https调用级别添加一个订阅,这似乎是错误的,难道我不能通过使用单个订阅来完成整个调用堆栈吗?问候和问候