在一个有角度的5项目中,我试图处理Observables,但不了解导入分离的operators时它如何工作。

考虑将fromPromisemap链接:

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/

10-09 19:35