通过触发新的observable来停止中止之前的observable

时间:2017-11-22 09:49:07

标签: angular rxjs reactive-programming

我提出了以下任务:

  • 我有5个文字输入字段
  • 这些字段都与subject.next()上的keyup函数相关联。
  • 在每个输入文本更改时,发送对我的服务器的请求 - 是的,此行为适用于所有5个输入字段。

我的问题是:

  • 如果我在这些字段中输入文本以快速切换输入对象,则先前的请求(可能无法完成)将被丢弃。
  • 这似乎发生在长switchMap服务器请求(见下文)
  • 期间

我的HTML看起来像是:

<div *ngFor='let model of models'>
    <input type='text' [(ngModel)]='model.text' (ngModelChange)='mySubject.next(model)' />
    <div [class.succeeded]='model.valid'></div>
</div>

我的.ts组件:

mySubject = new Subject<any>();

ngOnInit(): void {
   this.mySubject
       .debounceTime(200)
       .do(item => item.valid = false)
       .switchMap(item => this.myHttpService.check(item), (item, exists) => {
           item.valid = exists;
           return item;
       })
       .subscribe(...);
}

是否有可能等待前一个observable完成或同时执行它们?

0 个答案:

没有答案