Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rxjs:takeUntil()在observable完成并重新启动后出现错误行为?_Rxjs_Observable_Subject - Fatal编程技术网

Rxjs:takeUntil()在observable完成并重新启动后出现错误行为?

Rxjs:takeUntil()在observable完成并重新启动后出现错误行为?,rxjs,observable,subject,Rxjs,Observable,Subject,我有以下代码: const reconnectorAfterPingPongFailed$ = Observable.of('timeout').delay(5000).takeUntil(this.serviceAlive$); reconnectorAfterPingPongFailed$ .race(this.pingPong$) .take(1) .repeat() .takeUntil(

我有以下代码:

 const reconnectorAfterPingPongFailed$ = Observable.of('timeout').delay(5000).takeUntil(this.serviceAlive$);

        reconnectorAfterPingPongFailed$
          .race(this.pingPong$)
          .take(1)
          .repeat()
          .takeUntil(this.serviceAlive$)
          .do(() => console.log("[ping-pong]:","repeated"))
          .subscribe((data: any) => {
// some code
});
我希望从这段代码中得到什么

  • 每N秒钟,我们就会从服务器上收到一些“pong”消息,这是用来生成这个.pingPong$.next(“pong”)的
  • 它转到race(),如果有pong,我们将在subscribe中获得“pong”-命令,如果“pong”延迟超过5000秒,则获得“timeout”(事件来自
    reconnectorAfterpingfailed$
  • 我只想在我的服务处于活动状态时(比方说在我登录时)处理订阅
  • 因此,当我注销时,我会执行
    .next()
    .complete()
  • 当我第一次注销时,我没有看到
    .do()
  • 当我再次登录时,将再次重新创建此主题private
    serviceAlive$:subject=new subject()
  • 当我再次注销时,似乎这个代码
    .do(()=>console.log(“[ping-pong]:”,“repeated”)
    仍在工作
  • 这需要一个。我很困惑:在“5”中你说它不起作用,在“7”中你说它仍然起作用。