【发布时间】:2021-07-04 18:02:27
【问题描述】:
我曾经做 async/await 并且刚刚学会在 Angular 中使用 Observable,因为它是 Angular 的方式,所以我想在这里重构这段代码 sn-p 使它成为一个 Observable:
async refreshToken() {
const headers = this.authStorage.getRequestHeader();
const body = {
refreshToken: this.authStorage.getStoredValue('refreshToken'),
};
const newAccessToken = await this.http
.post<any>(ApiURLStore.REFRESH_TOKEN_URL, body, { headers: headers })
.toPromise();
this.authStorage.setValueToStore('accessToken', newAccessToken);
}
所以基本上我正在向我的后端发出一个 post 请求并取回一个令牌,然后在 authStorage 中使用它。
我尝试将其作为一个 Observable 来执行,并且到目前为止:
refreshToken(): Observable<any> {
const headers = this.authStorage.getRequestHeader();
const body = {
refreshToken: this.authStorage.getStoredValue('refreshToken'),
};
return this.http
.post<any>(ApiURLStore.REFRESH_TOKEN_URL, body, { headers: headers });
this.authStorage.setValueToStore('accessToken', newAccessToken);
}
这没关系并且有效,但我不能以这种方式调用我的 authStorage。 我无法将其保存在变量中,因为 Observable 需要返回... 我也尝试过使用管道和订阅,但没有机会。
有什么建议吗?
【问题讨论】:
-
创建一个新的 Promise 并返回它
标签: javascript angular typescript promise observable