Observable给出了多个值

时间:2017-09-17 05:08:39

标签: javascript rxjs

我有一个observable,它向我发送Socket Data

getMessages() {

let observable = new Observable(observer => {


  this.sp.socket.on('new_msg_server', (data) => {
    observer.next(data);
  });

return observable;
  });
}

我正在订阅下面的观察

getMessages().subscribe(data=>{
  console.log(data);
})

我期待data成为最新数据。但是,在记录data

时,我会获得所有以前的值

这是可观察的正常行为吗?它总能回归整个可观察的历史吗?

1 个答案:

答案 0 :(得分:0)

你正以错误的方式创造你的观察力。我试图解释为什么它的错误,但它很难理解,所以只是尝试这样的事情:

getMessages() {

    return Observable.create(observer => {
        this.sp.socket.on('new_msg_server', (data) => {
            observer.next(data);
        });

        // You should do some error handling here, not sure what kind of socket you are using, but something like this 
        this.socket.on('error', (error) => {
            observer.error(error);
        });

        return () => {
            // Close connection and clean up here
            this.sp.socket.close(); // or what works for you..
        };
    });
}