RXJS:如何获取连接事件? retrywhen:如何参与执行?

时间:2019-12-13 22:22:26

标签: angular websocket rxjs rxjs-observables retrywhen

当Angular尝试连接时,我想显示“正在连接”。我可以在第一次连接时执行此操作,但是使用retryWhen()时我不知道该如何执行。我需要了解实际执行情况,然后执行以下操作:

this.connectionStatus = "Connecting"

当前代码:

    this.connectionStatus = "Connecting";

    let socket = new WebSocketSubject(..);

    this.socket
      .pipe(retryWhen(errors =>
        errors.pipe(
          tap(val => {
            console.log("Retry in 10 sec", val);
          }),
          delay(10000)
        )))
      .subscribe(..);

1 个答案:

答案 0 :(得分:0)

仅在延迟后设置状态。 retryWhen希望您返回一个可观察对象,当该可观察对象发出时,它将开始重试连接,即在delay之后开始重试

  errors.pipe(
          tap(val => {
            console.log("Retry in 10 sec", val);
          }),
          delay(10000),
          tap(()=>this.connectionStatus = "Connecting"
)
        )))