我的目标是在 Ionic 3 项目中使用 RxJs switchMap
,如果服务器离线,则取消任何正在进行的登录尝试,并仅使用最新请求。否则我以后会得到一些不需要的异步副作用。
在我的视图层中,我submitStream$
用于捕获按钮点击流,然后将其作为方法参数传递给服务层。在服务层中,我response$
通过 aswitchMap
将传递的参数submitStream$
与Observable<Response>
从this.webServiceUtil.testLogin()
.
我尝试实现此代码:
HTML 标记
<button #submit type="submit">Submit</button>
打字稿:视图层
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/fromEvent';
import { ElementRef, ViewChild } from '@angular/core';
export class LoginPage {
@ViewChild('submit') button: ElementRef
submitStream$:any;
...
ionViewDidLoad() {
this.submitStream$ =
Observable.fromEvent(this.button.nativeElement, 'click')
}
...
}
打字稿:服务层(submitStream$ 作为方法参数进来)
this.response$ = submitStream$.switchMap(click =>
this.webServiceUtil.testLogin())
我也尝试过this.submitStream$
在ngAfterViewInit()
当事情不起作用时,我还尝试将其附加到 Observable.fromEvent:
.subscribe(ev => {
console.log('LoginPage: ionViewDidLoad() submitStream$.subscribe(): ev:', ev);}
)