如何解决timeout运算符在管道Rxjs主题中不起作用
我在主题中遇到超时运算符问题。
我的问题看起来像上面的示例,但是我得到了所有来源,
响应: 可观察的: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);
解决方法
您订阅了错误的观察结果。
subject.pipe(timeout(2000));
以上行不适用于主题本身,而是返回一个新的Observable,它具有2秒的超时时间。因此,您应该订阅此返回的可观察对象,而不是主题本身。因此您的代码应为:
subject.pipe(timeout(2000)).subscribe({
next: (v) => console.log(`observer: ${v}`),error: (e) => console.log(`There is an Error ${e}`)
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。