Javascript Observable提供多个值

Javascript Observable提供多个值,javascript,rxjs,Javascript,Rxjs,我有一个可观察的,它向我发送套接字数据 getMessages(){ 让可观察=新可观察(观察者=>{ this.sp.socket.on('new\u msg\u server',(数据)=>{ 下一步(数据); }); 可观测收益; }); } 我同意如下所示的可观测数据 getMessages().subscribe(data=>{ console.log(data); }) 我希望数据是最新的数据。但我在记录数据时会得到所有以前的值 这是一个可观察的物体的正常行为吗?它总是

我有一个可观察的,它向我发送套接字数据

getMessages(){
让可观察=新可观察(观察者=>{
this.sp.socket.on('new\u msg\u server',(数据)=>{
下一步(数据);
});
可观测收益;
});
}
我同意如下所示的可观测数据

getMessages().subscribe(data=>{
  console.log(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..
        };
    });
}

你以错误的方式创造了你的可观察事物。我试着解释为什么它是错的,但结果很难理解,所以试着这样做:

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..
        };
    });
}