如何将数据放入ConnectableObservable?我问这个问题是在异步函数完成之前,observable的数据不可用的情况。一个简单的例子:
function myFunc() {
let observable = Rx.Observable.create().publish();
setTimeout(() => console.info('TIMEOUT') || observable.of('data').connect(), 300);
return observable;
}
myFunc().subscribe(x => console.log(x));
我也试过
observable.map(() => 'data').connect()
observable.flatMap(() => Observable.of('data')).connect()
在我的例子中替代.of()
但没有成功。
答案 0 :(得分:1)
Observables没有connect()
方法。唯一的例外是ConnectableObservable
运算符返回的publish()
。
您可以执行以下操作:
let source = Observable.create(observer => {
const timer = setTimeout(() => observer.next('data'), 300);
return () => {
clearTimeout(timer);
};
}).publish();
source.connect();
source.subscribe(console.log);
编辑:
let observable = Rx.Observable.create(...)
.publish();
let o1 = observable
.map(val => true)
.flatMap(...)
.subscribe(...);
observable.connect();
......或......
let observable = Rx.Observable.create(...);
let o1 = observable
.map(val => true)
.flatMap(...)
.publish();
o1.subscribe(...);
o1.connect();