angular - 如何延迟主题的下一个(值)?

标签 angular rxjs angular5 rxjs5 subject

我的 AlertService 有 private subject = new Subject<Alert>(); . 我想在 5 秒后自动清除警报。我可以使用 setTimeout() 来做到这一点像这样:

autoClear(alertId?: string) {
   setTimeout(
      () => this.subject.next(new Alert({alertId})),
   5000);
  }

我试图更优雅地做到这一点,并创建了这段代码:

autoClear(alertId?: string) {
    const delay = new Observable(x => {
      x.next();
    }).delay(5000).subscribe(() => {
      this.subject.next(new Alert({alertId}));
      delay.unsubscribe();
    });
  }

这两个示例都有效,但它看起来不像是使用 RxJS 的正确方法。我该如何改进它?

最佳答案

new Observable(x => {
  x.next();
}).delay(5000);

是正确的方法。管道运算符的新方法是

new Observable(x => {
  x.next();
}).pipe(delay(5000));

关于angular - 如何延迟主题的下一个(值)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51516721/

相关文章:

javascript - 如何使用http post发送toDataURL 'image/png'对象?

angular - 如何延迟重置 Observable?

node.js - 类型错误 : path must be a string or Buffer MEAN stack

javascript - Angular 中的随机动画

javascript - 如何使 Protractor 的 ElementArrayFinder 'each' 函数等待当前操作完成后再进入下一次迭代?

angular - Angular 2 组件选择器中的条件

javascript - rxjs pausableBuffered 多个订阅

angular - 如何从单个 Observable<[]> 返回两个修改后的 Observable<[]>

css - 动态创建卡片时如何将 Mat-Card Mat-card-action 放在卡片底部

css - Angular:根据用户加载 scss