Angular2-如何中止/取消运行http请求调用?

Angular2-如何中止/取消运行http请求调用?,angular,Angular,我正在自动完成搜索 keypress(valueSearch){ // call Ajax search with ValueSearch // .... } 每次按键事件发生时,我都希望取消旧的http请求。事实上,您需要依赖于从事件创建的可观察对象。如果使用默认事件绑定,则无法访问此可观察对象。关于此问题,存在一些尚未解决的问题: 现在,您需要使用@ViewChild装饰器引用元素,并在其上配置一个可观察的对象: @ViewChild('someElt') someEl

我正在自动完成搜索

keypress(valueSearch){
   // call Ajax search with ValueSearch
   // ....
}

每次按键事件发生时,我都希望取消旧的http请求。

事实上,您需要依赖于从事件创建的可观察对象。如果使用默认事件绑定,则无法访问此可观察对象。关于此问题,存在一些尚未解决的问题:

现在,您需要使用
@ViewChild
装饰器引用元素,并在其上配置一个可观察的对象:

@ViewChild('someElt')
someElt: ElementRef;

ngAfterViewInit() {
  Observable.fromEvent(someElt.nativeElement, 'keyup');
}
现在,您可以利用
switchMap
操作符对其进行HTTP请求。如果数据流中存在正在进行的请求,则将取消该请求:

@ViewChild('someElt')
someElt: ElementRef;

ngAfterViewInit() {
  Observable.fromEvent(someElt.nativeElement, 'keyup').switchMap((evt) => {
    return this.http.get('something').map(res => res.json())
  }).subscribe(data => {
    // use data
  });
}