如何创建Observable <any []>?

时间:2017-06-16 20:51:57

标签: javascript typescript socket.io rxjs

我需要到Observable<any[]>。我目前有一个看起来像这样的观察点:

        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真的很难。

1 个答案:

答案 0 :(得分:2)

使用扫描运算符:

const yourNewObservable = eventsWatcher
    .scan((acc, newItem) => acc.concat(newItem), []);
相关问题