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
});
}