【问题标题】:timeout() operator not working in pipe Rxjs subjecttimeout() 运算符在管道 Rxjs 主题中不起作用
【发布时间】:2020-12-07 14:32:35
【问题描述】:

我对主题中的超时运算符有疑问。

我的问题看起来像上面的示例,但我得到了所有的源代码,

回应: 可观察:1 可观察:2

网址:https://stackblitz.com/edit/ou5yp1?file=index.ts

import { Subject, from,Observable } from 'rxjs';
import {timeout} from 'rxjs/operators';

const subject = new Subject();
 subject.subscribe({
  next: (v) => console.log(`observer: ${v}`),
   error: (e) => console.log(`There is an Error ${e}`)
  });
subject.pipe(timeout(2000));

const observable = new Observable( sub=> {
 sub.next( 1);
 setTimeout(()=> {
 sub.next(2)
 },5000)
})
observable.subscribe(subject); 

【问题讨论】:

    标签: javascript node.js typescript rxjs rxjs-pipeable-operators


    【解决方案1】:

    你订阅了错误的 observable。

    subject.pipe(timeout(2000));
    

    上述行不适用于主题本身,而是返回一个具有 2 秒超时的新 observable。所以你应该订阅这个返回的 observable 而不是主题本身。所以你的代码应该是:

    subject.pipe(timeout(2000)).subscribe({
      next: (v) => console.log(`observer: ${v}`),
      error: (e) => console.log(`There is an Error ${e}`)
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-28
      相关资源
      最近更新 更多