Rxjs:使用delayWhen运算符的延迟计时器存在问题

问题描述

rxjs delayWhen运算符存在问题。我想通过动作延迟计时器。我不明白为什么一种方法delayTimerStart_WORKING有效而第二种方法delayTimerStart_NOT_WORKING不可行。唯一的区别是,对于不起作用的方法,我要订阅一个主题链接到stackblitz示例以更好地理解:https://stackblitz.com/edit/typescript-rx-playground-pkjajh

let timeStamp = Date.Now();

let subject = new Subject<any>();

let MOCK_DELAY_SUBJECT = () => {
  timer(5000).subscribe(() => {
    subject.next();
  })
}

let delayTimerStart_NOT_WORKING: () => Observable<any> = () => {
    return new Observable<void>(subscriber => {
      subject.subscribe(() => {
        subscriber.next();
      })
  })
}

let delayTimerStart_WORKING: () => Observable<any> = () => {
  return new Observable<void>(subscriber => {
    timer(5000).subscribe(() => {
      subscriber.next();
      subscriber.complete();
    })
  })
}

let timerDelay = () => {
  timer(3000)
    //.pipe(delayWhen(delayTimerStart_WORKING))
    .pipe(delayWhen(delayTimerStart_NOT_WORKING))
    .subscribe(() => {
      console.log(`${(Date.Now() - timeStamp) / 1000} seconds`);
    })
}

MOCK_DELAY_SUBJECT();

timerDelay();

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)