Как вывести значения из наблюдаемых из оператора retryWhen? - PullRequest
0 голосов
/ 04 июня 2019

В настоящее время я повторно подключаю веб-сокет, когда он отключен с помощью оператора retryWhen.

Между моментом, когда веб-сокет отключается, и временем, когда веб-сокет восстанавливается, я хочу отобразить уведомление дляuser.

Итак, когда веб-сокет подключен, он вернет (пример):

{
  status: 'CONNECTED'
}

, а в период между фазами подключения и переподключения он вернется (пример):

{
  status: 'CONNECTING'
}

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

По сути, что бы якак сделать, это выдать значение из наблюдаемого, пока оператор retryWhen работает, но до того, как он попытается восстановить соединение.

public getSocket(): Observable<T> {
      return this.socket$
      .retryWhen((errors: Observable<T>) => {
        return Observable.of({
          status: 'CONNECTING'
        })
        .concat(
          errors
          .delay(this.TIMEOUT_INTERVAL)
          .concat(
            Observable.throw(errors)
          )
        );
      })
      .retry();
    }

Для веб-сокета, который успешно восстанавливает соединение, я ожидал бы, что значения, излучаемые из наблюдаемого, будут:

status === 'CONNECTED'
status === 'CONNECTING'
status === 'CONNECTED

Для веб-сокета, который не может восстановить соединение, я бы ожидал, чтоОтрицательные сигналы, выделяемые из наблюдаемого:

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