可观察给出了多个值
问题描述:
我有一个观察的,它发送我的Socket数据可观察给出了多个值
getMessages() {
let observable = new Observable(observer => {
this.sp.socket.on('new_msg_server', (data) => {
observer.next(data);
});
return observable;
});
}
我订阅可观察像下面
我期待的data
是最新数据。但在记录日志时,我获得了以前的所有值data
这是可观察性的正常行为吗?它总是会返回整个可观察历史吗?
答
您正在以错误的方式创建可观测值。我试图解释为什么它的错误,但它出来很难理解,所以试试这样的事情吧:
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..
};
});
}