Асинхронный эквивалент tap () в RxJS? - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть побочный эффект наблюдаемой, который необходимо разрешить до завершения основной наблюдаемой.Если бы это была синхронная операция, я мог бы использовать оператор tap().Есть ли явный эквивалент для асинхронной операции?

В следующем примере я должен отобразить внутреннее значение обратно на внешнее значение, через которое я действительно хочу передать.Как бы мне избежать этого отображения?

  const user = requestUser().pipe( 
    switchMap(user => {
      return requestAndAssignToken(user)
        .pipe(
          map(token => user)
        );
    })
  );

1 Ответ

0 голосов
/ 14 ноября 2018

Если я правильно понимаю, вы хотите проигнорировать результат внутренней наблюдаемой и просто подождать, пока внешняя наблюдаемая не выпустит его, прежде чем двигаться дальше.

В этом случае я бы предложил оператор delayWhen. Ему передается delayDurationSelector, который возвращает наблюдаемое (duration Observable). Затем он ведет себя как , указанное в документации :

Исходное значение испускается на выходе Observable, только когда длительность Observable испускает значение или завершается

Для вашего примера это будет выглядеть так:

const user = requestUser().pipe( 
    delayWhen(user => requestAndAssignToken(user))
);

Вот простой пример

...