在使用rxjs的Angular 2中,我试图将Promise转换为Observable . 由于许多在线指南显示我在 Observable
上使用了 fromPromise
. 哪个抛出错误:
Property 'fromPromise' does not exist on type 'typeof Observable'.
Observable导入如下:
import { Observable } from "rxjs/Observable";
尝试导入 fromPromise
像其他运算符导致错误:
import 'rxjs/add/operator/fromPromise';
即使我压制打字稿错误,它仍然会导致错误:
(<any>Observable).fromPromise
错误:
Uncaught (in promise): TypeError: __WEBPACK_IMPORTED_MODULE_3_rxjs_Observable__.Observable.fromPromise is not a function
在rxjs repo here上报告了一些类似的问题,但也没有解决方案 .
2 回答
UPDATE:
从
rxjs
6.0.0-beta.3开始,应从rxjs
导入运算符和可观察的创建者 . 此外,fromPromise
不再是公共API的一部分,它包含在from
方法中 .TL;DR;
UPDATE
对于rxjs 6.0.0使用:
UPDATE:
在
rxjs
5.5.x中发布pipeable operators之后,强烈建议不要使用猴子补丁方法 . 考虑使用静态方法选项 .Original answer
从
rxjs
5.4.x开始,fromPromise
可以用作静态方法,也可以修补到Observable
原型中 .首先,您可以执行以下操作:
有关此方法的更多信息here
要做第二个,您需要更改import语句:
有关此方法的更多信息here
我个人会推荐第一个,考虑到第二种方法基本上是第一种,区别在于
Observable
原型已经改变 .就像Jota所说的“来自”是答案 .
你可以从这里找到参考
https://www.learnrxjs.io/operators/creation/from.html
但是,如果你想指定'Promise to Observable',你可以使用'fromPromise',如下所示 .