Rxjs условная задержка - PullRequest
0 голосов
/ 07 мая 2018

Я хочу, чтобы наблюдаемое было отложено в зависимости от его значения. Например:

of(someBool).pipe(delay(1000))

Пропустить задержку, когда someBool ложно, но подождать секунду, когда это правда.

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Для меня не понятен контекст вопроса. Но я бы хотел привести пример. Предположим, вы внедрили систему входа в систему и хотите подождать, пока не получите какой-нибудь токен, чтобы поместить его в другой Observable или Cookies. Затем вы можете подождать значение вашего Observable (someBool, но в моем случае это было this.authService.isLoggedIn). Как сказал Инго Бюрк, вы можете сделать что-то вроде этого:

return this.authService.isLoggedIn
  .pipe(
    delayWhen(loggedIn => loggedIn ? interval(0) : interval(10000)),
  );

И когда состояние isLoggedIn изменяется, пользователь входит в систему.

0 голосов
/ 07 мая 2018

Вы можете использовать delayWhen для этого:

of(someBool).pipe(
  delayWhen(val => val ? interval(1000) : of(undefined))
)

Примечание, согласно документам, использующим empty() вместо of(), должно ИМХО работать, но, похоже, не работает. Я считаю, что это может быть ошибкой. Я сообщил об этом .

...