最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - timeout() operator not working in pipe Rxjs subject - Stack Overflow

programmeradmin5浏览0评论

I have an Issue with timeout operator in subject.

my problem look like sample above, but I got all of source,

response: observable: 1 observable: 2

url: .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); 

I have an Issue with timeout operator in subject.

my problem look like sample above, but I got all of source,

response: observable: 1 observable: 2

url: https://stackblitz./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); 
Share Improve this question asked Aug 18, 2020 at 11:54 Omid MamandiOmid Mamandi 1131 gold badge2 silver badges7 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 5

You have subscribed to wrong observable.

subject.pipe(timeout(2000));

The above line does not apply to subject itself, but instead returns a new observable which has 2 seconds timeout. So you should subscribe to this returned observable instead of subject itself. So your code should be:

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

评论列表(0)

  1. 暂无评论