2016-04-14 29 views
7

Używam tego samouczka https://egghead.io/lessons/rxjs-creating-an-observable, który odwołuje się do wersji 2.5.2 rxjs.uzyskiwanie błędów rxjs przy odwoływaniu się do najnowszego rxjs

ja przedstawieniu najnowszej rx.umd.js od [email protected]" npm pakiet <script src="node_modules/rxjs/bundles/rx.umd.js"></script> A oto kod próbuję uruchomić:

console.clear(); 

var source = Rx.Observable.create(function(observer){ 
    setTimeout(function() { 
     console.log('timeout hit'); 
     observer.onNext(42); 
     observer.onCompleted(); 
    }, 1000); 

    console.log('started'); 
}); 

var sub = source.subscribe(function(x) { 
    console.log('next ' + x); 
}, function(err) { 
    console.error(err); 
}, function() { 
    console.info('done'); 
}); 

setTimeout(function() { 
    sub.dispose() 
}, 500); 

Oto wyjście konsoli otrzymuję.

Console was cleared 
script.js:10 started 
script.js:22 Uncaught TypeError: sub.dispose is not a function 
script.js:5 timeout hit 
script.js:6 Uncaught TypeError: observer.onNext is not a function 

plunker: https://plnkr.co/edit/w1ZJL64b8rnA92PVuEDF?p=catalogue

Czy rxjs 5 api jest znacznie różni się od rxjs 2,5 i observer.onNext(42);sub.dispose() i nie jest już obsługiwany?

Odpowiedz

7

Zgadza się. RxJS 5 został przepisany, aby poprawić wydajność i był zgodny ze specyfikacją ES7 Observable. Sprawdź RxJS 4->5 migration page na Github.

Oto przykład praca:

// Create new observable 
const one = Observable.of(1,2,3); 

// Subscribe to it 
const oneSubscription = one.subscribe({ 
    next: x => console.log(x), 
    error: e => console.error(e), 
    complete:() => console.log('complete') 
}); 

// "Dispose"/unsubscribe from it 
oneSubscription.unsubscribe(); 

Wiele metod został przemianowany, ale sam API jest bardzo łatwy do przejścia do.

+0

https://github.com/ReactiveX/rxjs/blob/master/MIGRATION.md#observer-interface-changes-also-subjects – Cody