timeout() 运算符在管道 Rxjs 主题中不起作用
timeout() operator not working in pipe Rxjs subject
我对主题中的超时运算符有疑问。
我的问题看起来像上面的示例,但我得到了所有源代码,
回复:
可观察到:1
可观察到:2
url: 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);
您订阅了错误的 observable。
subject.pipe(timeout(2000));
以上行不适用于主题本身,而是 returns 一个有 2 秒超时的新可观察对象。所以你应该订阅这个返回的可观察对象而不是主题本身。所以你的代码应该是:
subject.pipe(timeout(2000)).subscribe({
next: (v) => console.log(`observer: ${v}`),
error: (e) => console.log(`There is an Error ${e}`)
});
我对主题中的超时运算符有疑问。
我的问题看起来像上面的示例,但我得到了所有源代码,
回复: 可观察到:1 可观察到:2
url: 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);
您订阅了错误的 observable。
subject.pipe(timeout(2000));
以上行不适用于主题本身,而是 returns 一个有 2 秒超时的新可观察对象。所以你应该订阅这个返回的可观察对象而不是主题本身。所以你的代码应该是:
subject.pipe(timeout(2000)).subscribe({
next: (v) => console.log(`observer: ${v}`),
error: (e) => console.log(`There is an Error ${e}`)
});