2017-09-17 4 views
1

ich eine beobachtbare haben, die mir Datenbeobachtbare gibt mehrere Werte

Sockel sendet
getMessages() { 

let observable = new Observable(observer => { 


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

return observable; 
    }); 
} 

I wie

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

ich die data erwarte unter

auf die beobachtbaren melde mich an die neuesten Daten zu sein. Aber ich bekomme alle vorherigen Werte beim Loggen data

Ist das normale Verhalten eines Observablen? Gibt es immer die gesamte beobachtbare Geschichte zurück?

Antwort

0

Sie erstellen Ihre beobachtbare den falschen Weg. Ich versuchte zu erklären, warum es falsch ist, aber es kam heraus, dass es schwer zu verstehen ist, stattdessen versuchen Sie einfach so etwas wie folgt:

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