Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 原型链接如何与angular5中的RxJS一起工作?_Javascript_Angular_Rxjs - Fatal编程技术网

Javascript 原型链接如何与angular5中的RxJS一起工作?

Javascript 原型链接如何与angular5中的RxJS一起工作?,javascript,angular,rxjs,Javascript,Angular,Rxjs,在angular 5项目中,我试图处理,但不理解导入分离的操作符时它是如何工作的 考虑将promise的链接到地图上: import { fromPromise } from 'rxjs/observable/fromPromise'; import { map } from 'rxjs/operator/map'; 使用fromPromise().map() 返回错误:fromPromise\u 1.fromPromise(…).map不是函数 和 import 'rxjs/add/obs

在angular 5项目中,我试图处理,但不理解导入分离的
操作符时它是如何工作的

考虑将promise的
链接到
地图上

import { fromPromise } from 'rxjs/observable/fromPromise';
import { map } from 'rxjs/operator/map';
使用
fromPromise().map()
返回错误:
fromPromise\u 1.fromPromise(…).map不是函数

import  'rxjs/add/observable/fromPromise';
import { Observable } from 'rxjs/Observable';
import { map } from 'rxjs/operator/map';
使用
Observable.fromPromise().map()
返回错误:
Observable\u 1.Observable.fromPromise(…).map不是函数

但是

import Rx from 'rxjs/Rx';
使用
Rx.Observable.fromPromise().map()
按预期工作

喜欢

import { fromPromise } from 'rxjs/observable/fromPromise';
import { map } from 'rxjs/operator/map';
使用
map.call(fromPromise(),)


有人能解释一下吗?

在可管道化操作符之前,您必须向
可观察的原型添加一个操作符才能使用它

import  'rxjs/add/observable/fromPromise';
此行将
fromPromise
操作符添加到
可观察的
原型中。您可以查看源代码。这就是为什么添加后错误会转到
map
。如果您还为
map
添加了一个,那么它可能会开始为您工作

import Rx from 'rxjs/Rx';
这条线将导入所有内容,包括将所有操作员修补到可观察的原型上。这可能会增加您的捆绑包大小,因此应该避免

如果您使用的是RxJs 5.5+,那么您可以在执行以下操作的地方使用pipeable操作符:

import { map } from 'rxjs/operators';

autobots.pipe(map(autobot => transform(autobot));

看到了,好了,一切都在导入
map
的细微差别中,路径很好:
'rxjs/operator/map'
导入
map
方法,你可以
调用它,但是
'rxjs/add/observable/map'
添加
observable.prototype.map