- Q)如何将下面的可观察值转换为承诺值,以便使用
.then(...)
调用它?**
- Q)如何将下面的可观察值转换为承诺值,以便使用
我的方法我想转换成一个承诺:
this._APIService.getAssetTypes().subscribe(
assettypes => {
this._LocalStorageService.setAssetTypes(assettypes);
},
err => {
this._LogService.error(JSON.stringify(err))
},
() => {}
);
它调用的服务方法:
getAssetTypes() {
var method = "assettype";
var url = this.apiBaseUrl + method;
return this._http.get(url, {})
.map(res => <AssetType[]>res.json())
.map((assettypes) => {
assettypes.forEach((assettypes) => {
// do anything here you might need....
});
return assettypes;
});
}
谢谢!
8条答案
按热度按时间ff29svar1#
rxjs7
https://indepth.dev/posts/1287/rxjs-heads-up-topromise-is-being-deprecated
rxjs6
https://github.com/ReactiveX/rxjs/issues/2868#issuecomment-360633707
不要管。默认情况下,它在可观察对象上。
rxjs5
91zkwejq2#
可观察性可以像这样转化为承诺:
yeotifhr3#
你真的不需要这样做,只要做...
first()确保subscribe块只被调用一次(之后就好像您从未订阅过一样),与promises then()完全相同
fxnxkyjh4#
在你的情况下,做出可遵守承诺的正确方法是
4smxwvx55#
.toPromise()
现在在RxJS 7中已弃用(来源:https://rxjs.dev/deprecations/to-promise)作为已弃用的toPromise()方法的替代方法,应使用两个内置静态转换函数firstValueFrom或lastValueFrom之一。
示例:
很多评论都声称
toPromise
已经过时,但正如您在这里看到的,它并没有。因此,请使用
toPromise
(RxJs 6),如下所示:异步/等待示例:
了解更多here.
注:否则你可以使用
.pipe(take(1)).toPromise
,但正如所说,你应该没有任何问题,使用上述例子。pbwdgjma6#
1.第一个月
当我们对值流感兴趣时使用。工作方式类似于以前的
toPromise
示例
firstValueFrom
当我们对值流不感兴趣,而只对第一个值感兴趣,然后取消订阅流时使用
alen0pnh7#
您可以将Observable转换为promise,只需一行代码,如下所示:
现在,您可以在promisevar上使用then来根据您的需求应用then条件。
whlutmcx8#
我喜欢生的,所以这一个,因为**toPromise()**没有了
一种成熟的方法是使用https://rxjs.dev/api/index/function/lastValueFrom