在Angular 4 / Ionic 3中取消待处理的http请求

时间:2017-05-18 20:28:41

标签: cordova angular ionic-framework

我们有一个应用程序可以每天提取用户的日程安排。他们可以侧面滚动几天,在每个滚动停止时它会触发http.get并抓住当天的时间表。

我们遇到的问题是人们滚动,举起手指并继续滚动。我们实施了超时,因此幻灯片停止和请求触发之间存在延迟,但我们无法做太长时间,仍会触发大量http.get个请求。

我需要一种方法来在新的开始时取消任何待处理的HTTP请求。

slideStop() {
   ..gather date information and other relevant parameters..

   <stop any pending HTTP requests>

   this.http.get()
}

1 个答案:

答案 0 :(得分:2)

如果在observable上使用switchMap,当您重复使用文档中提到的此可观察对象时,它将取消所有待处理的请求(https://angular.io/docs/ts/latest/guide/router.html#activatedroute-the-one-stop-shop-for-route-information

  

switchMap运算符允许您使用Observable的当前值执行操作,并将其映射到新的Observable。与许多rxjs运算符一样,switchMap处理Observable和Promise来检索它们发出的值。

     

如果用户在仍然检索英雄的同时重新导航到该路线,switchMap运营商也将取消任何正在进行的请求。