Как ждать ajax, а затем выполнить повторный запуск ajax в rxjs - PullRequest
0 голосов
/ 28 сентября 2018

Я новичок в rxjs и хочу сделать простую функцию: создавать кнопки, каждое событие щелчка будет отправлять ajax, когда prev ajax не отвечает, кнопка просто возвращает

В чистом js я простоустановите флажок, чтобы проверить, готов или нет ajax, но я знаю, как сделать эту функцию в rxjs.

чистый js-код, такой как

let flag = false;
let el = document.querySelector("#btn");
el.addEventListener("click",handleBtn);
let handleBtn = () => {
   if(flag) return;  // if ajax no response then return
   fakeAjaxCall().then(
     val => flag = true, 
     reason => console.log(reason)
   )
}

, возможно, в rxjs, как этот,

import { Observable, Subject, ReplaySubject, from, of, range } from "rxjs/Rx";
    const btn$ = Observable.fromEvent(
      this.refs["btn"],
      "click"
    ).subscribe(fakeAjaxCall()); 

1 Ответ

0 голосов
/ 01 октября 2018

Вам нужно использовать выхлопная карта .Итак, для вашего примера это:

import { Observable, Subject, ReplaySubject, from, of, range } from "rxjs/Rx";
    const btn$ = Observable.fromEvent(
      this.refs["btn"],
      "click"
    ).pipe(exhaustMap(() => fakeAjaxCall())
    .subscribe(); 

Он будет игнорировать все выбросы с button$ до тех пор, пока наблюдаемое с exhaustMap не будет завершено

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...