Прервать выполнение трубы - PullRequest
1 голос
/ 08 апреля 2020

Я использую этот код для управления компонентом автозаполнения.

В этом коде ниже, как я могу прервать выполнение ".find" на основании какого-либо условия? Например, выполняется только в том случае, если какая-то переменная isOk имеет значение true.

ngOnInit() {
  this.control.valueChanges
    .pipe(
      debounceTime(300),
      tap(() => this.start()),
      switchMap(value =>
        this.modelService
          .find(this.searchUrl, this.searchField, value)
          .pipe(finalize(() => this.finalize()))
      )
    )
    .subscribe(values => this.loaded(values));
}

start() {
  .....
}

finalize() {
  .....
}

loaded(values) {
  .....
}

Ответы [ 2 ]

0 голосов
/ 09 апреля 2020

Вот что я сделал для работы:

this.control.valueChanges
  .filter(() => this.isOk)   // <==== used the filter function
  .pipe(
    debounceTime(300),
    tap(() => this.start()),
    switchMap(value =>
      this.modelService
        .find(this.searchUrl, this.searchField, value)
        .pipe(finalize(() => this.finalize()))
    )
  )
  .subscribe(values => this.loaded(values));
0 голосов
/ 08 апреля 2020

Не могли бы вы просто набрать трубку в Rx js find до вашего звонка:

ngOnInit() {
  this.control.valueChanges
    .pipe(
      debounceTime(300),
      tap(() => this.start()),
      switchMap(value =>
        this.modelService
          .pipe(find(() => this.isOk)),  // <-- like this
          .find(this.searchUrl, this.searchField, value)
          .pipe(finalize(() => this.finalize()))
      )
    )
    .subscribe(values => this.loaded(values));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...