我正在创建一个拦截器来发送令牌以及Api的请求。
我使用@ionic/storage
来存储我的用户信息。但是,当我尝试将构造函数中的令牌保存到变量(例如私有令牌:字符串)时,即使令牌存在,我的拦截器也无法获取该值。 我相信这是因为拦截是在this.storage.get函数结束之前执行的。
我该如何解决这个问题?
我尝试将this.storage.get
函数放在拦截中,但返回错误:
输入'承诺<无效|可观察到的< HttpEvent<任何>>>'不是 可分配给'Observable<类型HttpEvent<任何GT&;>”。属性 'Promise<类型'中缺少'_isScalar'无效|可观察到的< HttpEvent>>”
查看代码:
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return this.storage.get('token')
.then((token) => {
if (token) {
const newRequest = req.clone({ setHeaders: { 'Authorization': `Bearer ${token}` } });
return next.handle(newRequest);
} else {
return next.handle(req);
}
})
.catch(() => {
//TODO: Trata erro
})
}
感谢您的帮助。
答案 0 :(得分:0)
您可以使用Observable.fromPromise
方法将Promise
转换为Observable
。
答案 1 :(得分:0)
在返回之前将存储承诺转换为$scp '/tmp/*.{xml,crt,jks}' user@<destination server>
:
Observable