2016-05-11 9 views
3

I 4 verwenden RxJS erstellen Aber die RxJS 5 migration guid erklärt nicht, wie Hot Observable zu erstellen.Wie Hot beobachtbare in RxJS 5

const source = Observable.create((observer) => { 
    asynCall((data) => { 
    observer.onNext(data) 
    }) 
}) 
const published = source.publish() 
published.connect() 
published.subscribe((data) => { 
    console.log(data) 
}) 

Mit RX5 ich folgende Fehlermeldung haben:

Uncaught Typeerror: source.publish ist keine Funktion (...)

+0

Wie auch Sie die RxJS5 Quelle? – paulpdaniels

+0

Bitte geben Sie ein PLNKR, JSBIN oder ähnliches an. – rryter

+0

Hilft das? [... veröffentlichen ist keine Funktion ...] (http://stackoverflow.com/questions/34677947/converting-angular2-http-response-to-connectableobservable) – bloodyKnuckles

Antwort

3

Sie .publish().refCount() (oder .share() als Alias) verwenden können

var source = Rx.Observable.interval(1000) 
    .take(10) 
    .publish().refCount(); 

source.subscribe(item => console.log(`-: ${item}`)); 
setTimeout(() => { 
    source.subscribe(item => console.log(`--: ${item}`)); 
}, 2500); 

http://jsbin.com/cupibitehu/1/edit?js,console

Das oben genannte richtet zwei Subskriptionen ein, um zu zeigen, dass die verzögerte Subskription an der Stelle beginnt, an der die aktuellen Daten gesendet werden, und die zuvor ausgegebenen Ergebnisse nicht erneut wiedergegeben werden.

protokolliert das folgende

"-: 0" 
"-: 1" 
"-: 2" 
"--: 2" 
"-: 3" 
"--: 3" 
"-: 4" 
"--: 4" 
"-: 5" 
"--: 5" 
"-: 6" 
"--: 6" 
"-: 7" 
"--: 7" 
"-: 8" 
"--: 8" 
"-: 9" 
"--: 9" 

http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-share

+0

Wenn es eine heiße beobachtbare ist, dann sollten Sie nicht muss subscribe() anrufen, oder? –

+1

Ich folge nicht, warum Sie nicht abonnieren möchten, Sie müssten abonnieren/forEach, um Ergebnisse abzurufen. Das oben genannte richtet zwei Subskriptionen ein, um zu zeigen, dass die verzögerte Subskription dort beginnt, wo der aktuelle emittiert wird, und nicht vorher ausgegebene Ergebnisse wiedergibt. – subhaze

+0

yeah du hast Recht, ich habe mich geirrt –