fromPromise 在 Observable 类型上不存在 [英] fromPromise does not exist on type Observable

查看:23
本文介绍了fromPromise 在 Observable 类型上不存在的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在使用 rxjs 的 Angular 2 中,我试图将 Promise 转换为 Observable.正如许多在线指南所示,我在 Observable 上使用了 fromPromise.哪个抛出错误:

属性 'fromPromise' 不存在于类型 'typeof Observable' 上.

Observable 是这样导入的:

import { Observable } from "rxjs/Observable";

尝试像其他运算符一样导入 fromPromise 会导致错误:

import 'rxjs/add/operator/fromPromise';

即使我抑制打字稿错误,它仍然会导致错误:

(Observable).fromPromise

错误:

Uncaught (in promise): TypeError: __WEBPACK_IMPORTED_MODULE_3_rxjs_Observable__.Observable.fromPromise 不是函数

在 rxjs 存储库这里上报告了一些类似的问题,但那里也没有解决方案.

解决方案

更新:

rxjs 6.0.0-beta.3 开始,操作符和可观察的创建者应该从 rxjs 导入.此外,fromPromise 不再是公共 API 的一部分,而是包含在 from 方法中.

TL;DR;

更新

对于 rxjs 6.0.0 使用:

import { from } from 'rxjs';var observableFromPromise = from(promiseSrc);

更新:

管道操作符发布后rxjs 5.5.x,强烈不鼓励使用猴子补丁方法.考虑使用静态方法选项.

原答案

rxjs 5.4.x 开始,fromPromise 可以用作静态方法,也可以修补到 Observable 原型中.>

首先,您可以执行以下操作:

import { fromPromise } from 'rxjs/observable/fromPromise';var observableFromPromise = fromPromise(promiseSrc);

有关此方法的更多信息此处

要做第二个,你需要改变你的导入语句:

import { Observable } from 'rxjs/Observable';导入 'rxjs/add/observable/fromPromise';var observableFromPromise = Observable.fromPromise(promiseSrc);

有关此方法的更多信息此处

我个人推荐第一种,考虑到第二种方法基本上是第一种,区别在于改变了Observable原型.

In Angular 2 using rxjs I was trying to convert a Promise to Observable. As many of online guides showed I used fromPromise on Observable. Which throws error:

Property 'fromPromise' does not exist on type 'typeof Observable'.

Observable was imported like:

import { Observable } from "rxjs/Observable";

trying to import fromPromise like other operators results in error:

import 'rxjs/add/operator/fromPromise';

even if I suppress typescript error it still results in error:

(<any>Observable).fromPromise

Error:

Uncaught (in promise): TypeError: __WEBPACK_IMPORTED_MODULE_3_rxjs_Observable__.Observable.fromPromise is not a function

Somewhat similar issue was reported on rxjs repo here but there is no solution there either.

解决方案

UPDATE:

As of rxjs 6.0.0-beta.3, operators and observable creators should be imported from rxjs. Furthermore, fromPromise is not part of the public API anymore and its wrapped in the from method.

TL;DR;

UPDATE

For rxjs 6.0.0 use:

import { from } from 'rxjs';

var observableFromPromise =  from(promiseSrc);

UPDATE:

After the release of the pipeable operators in rxjs 5.5.x, the monkey patch approach is strongly discouraged. Consider to use the static method option.

Original answer

As of rxjs 5.4.x, fromPromise can be used as a static method or can be patched into the Observable prototype.

For the first, you can do the following:

import { fromPromise } from 'rxjs/observable/fromPromise';

var observableFromPromise = fromPromise(promiseSrc);

More info about this approach here

To do the second, you need to change your import statement:

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/fromPromise';

var observableFromPromise = Observable.fromPromise(promiseSrc);

More info about this approach here

Personally I would recommend the first one, considering that the 2nd approach is basically the 1rst, with the difference that the Observable prototype is changed.

这篇关于fromPromise 在 Observable 类型上不存在的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆