Ahm*_*mad 63 promise observable rxjs es6-promise angular
在使用rxjs的Angular 2中,我试图将Promise转换为Observable.由于许多在线指南的显示我用fromPromise的Observable.哪个抛出错误:
Property 'fromPromise' does not exist on type 'typeof Observable'.
Run Code Online (Sandbox Code Playgroud)
Observable导入如下:
import { Observable } from "rxjs/Observable";
Run Code Online (Sandbox Code Playgroud)
尝试fromPromise像其他运算符一样导入会导致错误:
import 'rxjs/add/operator/fromPromise';
Run Code Online (Sandbox Code Playgroud)
即使我压制打字稿错误,它仍然会导致错误:
(<any>Observable).fromPromise
Run Code Online (Sandbox Code Playgroud)
错误:
Uncaught (in promise): TypeError: __WEBPACK_IMPORTED_MODULE_3_rxjs_Observable__.Observable.fromPromise is not a function
Run Code Online (Sandbox Code Playgroud)
rxjs repo 在这里报告了一些类似的问题,但也没有解决方案.
Jot*_*edo 139
更新:
从rxjs6.0.0-beta.3开始,应从中导入运算符和可观察的创建者rxjs.此外,fromPromise不再是公共API的一部分,它包含在from方法中.
TL; DR;
UPDATE
对于rxjs 6.0.0使用:
import { from } from 'rxjs';
var observableFromPromise = from(promiseSrc);
Run Code Online (Sandbox Code Playgroud)
更新:
在5.5.x中发布可管理操作符之后rxjs,强烈建议不要使用猴子补丁方法.考虑使用静态方法选项.
原始答案
从rxjs5.4.x开始,fromPromise可以用作静态方法或者可以修补到Observable原型中.
首先,您可以执行以下操作:
import { fromPromise } from 'rxjs/observable/fromPromise';
var observableFromPromise = fromPromise(promiseSrc);
Run Code Online (Sandbox Code Playgroud)
有关此方法的更多信息点击这里
要做第二个,您需要更改import语句:
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/fromPromise';
var observableFromPromise = Observable.fromPromise(promiseSrc);
Run Code Online (Sandbox Code Playgroud)
有关此方法的更多信息点击这里
我个人会推荐第一个,考虑到第二种方法基本上是第一种,不同的是Observable原型改变了.
就像 Jota 所说的“来自”就是答案。
你可以从这里找到参考
https://www.learnrxjs.io/operators/creation/from.html
但是,如果您想指定“Promise to Observable”,您可以使用“fromPromise”,如下所示。
import { from as fromPromise, Observable} from 'rxjs';
...
private getObservable(): Observable<any> {
return fromPromise(this.promise);
}
private getPromise() {
this.promise = new Promise((resolve, reject) => {
this.service.getPromise()
.then(response => {
// do sth
resolve(response);
});
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33587 次 |
| 最近记录: |