【发布时间】:2017-10-25 02:24:48
【问题描述】:
我们有一个应用程序当前正在使用 angular http 客户端,但是 angular http 客户端无法执行证书固定,因此我们需要将其替换为 ionic-native 插件。这个插件“cordova-HTTP”返回 Promise 而不是 Observable。由于这是我们的核心 HTTP“路由器”类,许多其他服务都依赖它。因此,与其重写所有期望 Observable 的服务,我想将 Prmise 包装为 Observable。这是我到目前为止尝试做的事情,我在设备上没有收到任何错误,但客户端一直挂起,就像它在等待 Promise 被解决一样。无论如何,我的方法和实现是否不正确?
return Observable.fromPromise(this.http.get(url, {}, this.headers,
(res) => {
return Promise.resolve(res);
},
(error) => {
if (error.status === 401 || error.status === 403) {
this.login().then( () => {
return this.http.get(url, {}, this.headers);
});
} else {
this.log.error("Problem with authenticated get", error.error);
return Promise.reject(error);
}
}
));
【问题讨论】:
-
错误处理错误。
if (error.status === 401 || error.status === 403) { ...没有返回任何承诺,这显然会使承诺处于未决状态。您需要正确链接承诺。我不确定是否还有其他特定于 Cordova 的问题。
标签: angular http promise ionic2 observable