为什么从';导入时Rx.Observer会产生差异;rxjs';和';rx-lite';

为什么从';导入时Rx.Observer会产生差异;rxjs';和';rx-lite';,rxjs,Rxjs,以下是代码,控制台输出在注释中: 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.cr

以下是代码,控制台输出在注释中:

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;
});
我不知道为什么从
rxjs
导入时未定义rxjs是Ben Lesh导致的rxjs 5实现的参考实现

这是一次重写,API中有许多不同之处。您可以在此处找到记录的差异:

rx lite是RxJS 4实现的一部分


请注意,使用现代构建工具,以及导入RxJS使用的每个操作符/可观察对象的方式,不需要RxJS 5的“lite”版本。只是不要使用rx.all.js,而是按照构建工具的说明使用它,这些工具只包含您在最终交付成果中使用的文件。

不要混合使用rx.lite和rxjs,并且根据您使用的是哪一个,您还需要使用正确的.js文件。@Nypan所以它们是不同的东西,对于相同的API可以有不同的行为。。。不,他们并没有什么不同。但它们包含api的不同部分,lite包含的较少。所以他们会互相干扰。请看下面的som示例,包括什么以及如何包含等等。@Nypan如果它们有相同的行为,那么上面我的代码的输出是有线的。从
rxjs
导入的
Observer
未定义的
,而从
rx-lite
导入的是
函数
。这将导致出现问题,
observer.onError
observer.onNext
出现错误:
无法读取未定义的onError/onNext
。使用
rx-lite
时,这些错误将被完全去除。据我所知,
rxjs
是rxjs github页面上所说的
rx.all.js