【发布时间】:2017-06-16 20:51:57
【问题描述】:
我需要联系Observable<any[]>。我目前有一个看起来像这样的 observable:
const eventsWatcher = new Observable(observer => {
try {
this.socket.on('calendar-events', data => {
observer.next(data);
});
}
catch (err) {
observer.error(err);
}
})
基本上我需要从这个 Observable 中获取值并创建一个新的,它是现有 observable 发出的值的数组。
我试过了
const arr = [];
const eventsWatcher = new Observable(observer => {
try {
this.socket.on('calendar-events', data => {
observer.next(data);
});
}
catch (err) {
observer.error(err);
}
}).subscribe(data => {
arr.push(data);
});
return Observable.from(arr);
但这会返回 ArrayObservable 而不是 Observable<any[]>。
对不起,如果我描述得不好,但是 rxjs 真的很难。
【问题讨论】:
-
您是否需要新的 observable 为每个新项目发出一个数组?或者您只是希望它在 eventsWatcher 可观察对象完成后发出一个数组?
-
我真正需要的是每次现有的 observable 发出一个新值时,新的 observable 发出一个数组。发出的数组需要包含新值以及所有以前发出的值。
-
eventsWatcher 发出 1,2,3。选项 A:新的 observable 发出 [1]、[1,2]、[1,2,3]。选项 B:新的 observable 只发出 [1,2,3]
-
选项 A 是我正在寻找的。span>
-
添加了答案。不要放弃 Rx :)
标签: javascript typescript socket.io rxjs