angular - 可从带有嵌套 Promise 的 Promise 中观察到
问题描述
我有一个调用新 Xrm.WebApi 端点的服务。
这个端点返回一个 Promise,它有一个嵌套的 Promise “json”(文档),它允许获取服务返回的 json。
我使用“parseData”方法从这个 json 中提取一些数据,该方法将其作为对象数组返回。
我想返回一个Observable<MyObject[]>
,但我现在只能得到一个Observable<Promise<MyObject[]>>
。
我当前的代码如下所示:
return from(Xrm.WebApi.online.execute(crmRequest).then(
result => {
if (result.ok) {
return result.json().then(json => {
let res : MyObject[]= this.parseData(json);
return res;
});
}
},
error => {
throw error;
}
));
环境:
- Angular 8.2
- RxJs 6.4
解决方案
用于from
将您的第一个 Promise 转换为 Observable 并用于switchMap
映射到内部 Promise。filter
用于仅发出正常的结果,并map
用于映射到您想要的输出。当第一个或第二个 Promise 出错时,这个 Observable 会出错。
return from(Xrm.WebApi.online.execute(crmRequest)).pipe(
filter(result => result.ok),
switchMap(result => result.json()),
map(json => this.parseData(json) as MyObject[]),
)
有关更多信息,请阅读我的回复:将 Promise 转换为 Observable
推荐阅读
- javascript - Why does validation of a line with regex work well while validation of a string fails?
- javascript - console.log(res) NodeJS 的奇怪输出
- javascript - 从 HTML 页面发送 HTTP 请求
- qt - Arch Dark 主题 & Qt Creator
- javascript - 如何验证用户输入是否与给定字符串相同?Javascript
- c++ - 我如何实现自动 YT 打开?
- recursion - 使用递归检查数字是否为素数
- c++ - 如何正确地将内在和外在矩阵转换为opengl投影和视图矩阵
- java - servlet中的doPost方法没有被调用
- php - 在函数 PHP OOP 之后使用函数