也许以下内容按原样工作,但我不确定这是否是防止运行时出现任何可能问题的正确实现方式。
有这个:
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();
如果 this.storage.set
返回异常或因任何原因失败,我如何确保 toPromise()
将被拒绝?
最佳答案
在这种情况下,映射没有意义,因为您没有映射任何东西。 你可以简单地这样做:
const ep = `${environment.api.baseUrl}/login`;
return this.http.post<ILoginResponse>(ep, request)
.toPromise()
.then(
req => {
this.storage.set(environment.storage_keys.token, req.access_token).then(
() => this.authState$.next(true)
);
return req;
}
)
这将解决 this.storage
失败的问题。
示例:
const promiseError = new Promise(
(resolve, reject) => reject('err')
)
const promiseOk = new Promise(
(resolve, reject) => resolve('ok')
)
promiseOk
.then(
req => {
promiseError
.then(
() => console.log('fa')
)
.catch(
err => console.log('err')
)
return req;
}
)
.then(
req => console.log(req)
)
关于javascript - 确保 promise 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56449967/