在一个有角度的5项目中,我试图处理Observables
,但不了解导入分离的operators
时它如何工作。
考虑将fromPromise
与map
链接:
import { fromPromise } from 'rxjs/observable/fromPromise';
import { map } from 'rxjs/operator/map';
与
fromPromise().map()
返回错误:
fromPromise_1.fromPromise(...).map is not a function
和
import 'rxjs/add/observable/fromPromise';
import { Observable } from 'rxjs/Observable';
import { map } from 'rxjs/operator/map';
与
Observable.fromPromise().map()
返回错误:
Observable_1.Observable.fromPromise(...).map is not a function
但
import Rx from 'rxjs/Rx';
与
Rx.Observable.fromPromise().map()
一起按预期工作喜欢
import { fromPromise } from 'rxjs/observable/fromPromise';
import { map } from 'rxjs/operator/map';
与
map.call(fromPromise(),)
有人可以解释吗?
最佳答案
在使用管道运算符之前,必须将运算符添加到Observable
的原型中才能使用它。
import 'rxjs/add/observable/fromPromise';
此行将
fromPromise
运算符添加到Observable
的原型中。您可以查看源代码here。这就是为什么在添加错误之后,该错误会转移到map
。如果您还为map
添加了一个,则可能会开始为您工作。import Rx from 'rxjs/Rx';
该行将导入所有内容,其中包括将所有运算符猴子修补到Observable原型上。这可能会增加您的套装尺寸,因此应避免使用。
如果您使用的是RxJs 5.5+,则可以在执行操作的地方使用管道运算符:
import { map } from 'rxjs/operators';
autobots.pipe(map(autobot => transform(autobot));
关于javascript - 原型(prototype)链如何与angular5中的RxJS一起使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49368759/