2016-06-01 3 views
1

der Code Hier ist, und die Ausgabe der Konsole ist in Kommentar:warum Differenz Rx.Observer erhalten, wenn Import von 'rxjs' und 'rx-lite'

import Rx from 'rxjs'; 
import { Observer } from 'rxjs/Observer'; 
import Rx2 from 'rx-lite'; 
// import Promise from 'bluebird'; 
import 'whatwg-fetch'; 

const componentsData = {}; 

const availableComponentsObservable = Rx.Observable.create(observer => { 
    console.log(Observer); // output: undefined 
    console.log(Rx.Observer); // output: undefined 
    console.log(Rx2.Observer); // output: function() {} 
    fetch('/static/component-list.json').then((res) => res.json()) 
     .then((components) => { observer.onNext(components); }) 
     .catch((err) => { observer.onError(err); }); 
});// .groupBy(component => component.group); 

availableComponentsObservable.subscribe((data) => { 
    componentsData.availableComponents = data; 
}); 

Ich weiß nicht, warum, wenn Import von rxjs undefined bekam

+0

Mischen Sie nicht rx.lite und rxjs, und abhängig davon, welche Sie verwenden, müssen Sie auch die richtige .js-Datei verwenden. – Nypan

+0

@Nypan so sind sie unterschiedliche Sache, kann unterschiedliches Verhalten für die gleiche API haben? ... – tjfdfs

+0

Nein, sie sind nicht anders als sagen. Aber sie beinhalten verschiedene Teile der API, Lite beinhaltet weniger. Sie werden sich also gegenseitig stören. Sehen Sie sich https://github.com/Reactive-Extensions/RxJS an, dort sind einige Beispiele und was und wie und wie. – Nypan

Antwort

1

rxjs ist https://github.com/ReactiveX/RxJS die rxJS 5 Implementierung dass Ben Lesh eine Referenzimplementierung von https://github.com/tc39/proposal-observable

Es ist ein Rewrite und es gibt eine Reihe von Unterschieden in der API zu haben, führen hat. Die hier dokumentierten Unterschiede finden Sie unter https://github.com/ReactiveX/rxjs/blob/master/MIGRATION.md

rx-lite ist Teil von https://github.com/Reactive-Extensions/RxJS, die die RxJS 4-Implementierung ist.

Beachten Sie, dass mit modernen Build-Tools und der Art, wie Sie jeden von RxJS verwendeten Operator/Observable importieren müssen, keine "Lite" -Version von RxJS 5 erforderlich ist. Verwenden Sie rx.all einfach nicht .js und verwenden Sie es wie mit Build-Tools dokumentiert, die nur die Dateien enthalten, die Sie in Ihrem endgültigen Ergebnis verwenden.