首页 > 解决方案 > Angular - 取消以前的搜索请求并只保留最后

问题描述

我有一个 HTTP 请求

searchService() {
    return this.httpClient.get(URL);
}

我正在订阅这样

search() {
   this.service.searchService().subscribe((data) => { });
}

我的问题是它需要几秒钟,如果有人使用不同的搜索键多次点击,结果取决于请求的速度。

所以,我想取消所有以前的订阅,只保留最后一次搜索

标签: angularrxjsobservable

解决方案


您将需要使用一些 rxjs 运算符,即debounceTimedistinctUntilChangedswitchMap确保您不会发送太多 API 调用,并且您只获得最新请求的结果。

查看这篇文章的详细示例:
https ://alligator.io/angular/real-time-search-angular-rxjs/


推荐阅读