小编Sha*_*aim的帖子

如何使用switchMap取消待处理的http请求并仅接受最后一个订阅?

我试图使用subscription.unsubsribe取消待处理的http请求,如下所示:

getAgentList(pageNumber: number, filter: string): any {
   let requestUrl: string = 'api/service/agents_search?ACCT=' 
   +this.accountId;

if ( this.subscription ) {
    this.subscription.unsubscribe();
}

this.subscription =  this.backEndCommService.getData(requestUrl)
.subscribe(
        (res: any) => {
        let serverResponse: ServerResponse = new 
        ServerResponse(this.accountId, pageNumber, res.search_results, 
        res.resultRows, res.pageSize, res.resultPages)
                this._agentListData.next(serverResponse);
            },   
       (err: HttpErrorResponse) => {
                let errorMessage: string;
                if (err instanceof TypeError) {
                    errorMessage = 'Script error: ' + err.message;
                } 
                console.log(errorMessage);
    });
}
Run Code Online (Sandbox Code Playgroud)

我想知道如何将switchMap应用于此代码,以便杀死对URL的挂起请求(例如,当第一次搜索花费大量时间,而第二次输入时要输入第一个,而我想取消第一个,则自动完成搜索输入)。

httprequest observable rxjs angular switchmap

1
推荐指数
1
解决办法
2986
查看次数

标签 统计

angular ×1

httprequest ×1

observable ×1

rxjs ×1

switchmap ×1