原型的链接如何与angular5中的RxJS一起使用?

时间:2018-03-19 17:16:07

标签: javascript angular rxjs

在一个有角度的5项目中,我尝试处理14.20.2. Execution of try-finally and try-catch-finally,但在导入分隔的AssertionError originalError = null; try { Assert.assertEquals(true, false, "Boolean values did not match"); } catch (AssertionError e) { originalError = e; throw e; } finally { try { Assert.assertEquals(100, 10, "Integer values did not match"); } catch (AssertionError e) { if (originalError == null) throw e; originalError.addSuppressed(e); throw originalError; } } 时,不了解它是如何工作的。

考虑将operatorsfromPromise相关联:

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';

有人可以解释一下吗?

1 个答案:

答案 0 :(得分:1)

在可管理运算符之前,您必须向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));