javascript - 确保承诺失败
问题描述
也许以下内容按原样工作,但我不确定这是否是防止运行时出现任何可能问题的正确实现。
有这个:
const ep = `${environment.api.baseUrl}/login`;
return this.http.post<ILoginResponse>(ep, request).pipe(map(req => {
this.storage.set(environment.storage_keys.token, req.access_token).then(() => {
this.authState$.next(true);
});
return req;
})).toPromise();
如果返回异常或因任何原因失败,我如何确保toPromise()
将被拒绝?this.storage.set
解决方案
您始终可以使用 Promise 构造函数而不是toPromise
创建自己的构造函数以进行更细粒度的控制:
const ep = `${environment.api.baseUrl}/login`;
return new Promise((resolve, reject) => {
this.http.post<ILoginResponse>(ep, request).pipe(map(req => {
this.storage.set(environment.storage_keys.token, req.access_token).then(() => {
this.authState$.next(true);
resolve(/* optionally return data here */);
}).catch(e => reject(e));
})).catch(e => reject(e)); // Assuming this.http.post returns a promise
})
推荐阅读
- java - 如何执行与 JPA 标准相关的查询
- linux - 如何使用 Bash 遍历数组以检查列表环境变量?
- text-alignment - 在 MIT app Inventor 中使用“justify”进行文本对齐
- javascript - 如何在使用路径别名导入的文件上使用 Babel?
- ruby-on-rails - RSpec:Vue.js 代码未在 Capybara 测试中编译
- ios - 如何使用存储在项目中的本地 GIF 在 UIpage 视图控制器中快速预加载页面
- python-3.x - 如何通过发布请求修复 Python 400 'Bad Request' 错误?
- go - 在一系列数字上模仿 Go 中的 Python 列表理解
- c# - 创建 GetVehAvailRQ.wsdl Sabre Car Soap API 的代理类时出错
- microsoft-graph-api - 无论如何,在 Office 365 中使用 Delta API 获取基于 DateTime 的用户