我想在 Angular canActivate 函式中回傳一個 promise 函式。如何轉換下面的代碼以便它可以回傳承諾。我知道我可以使用 toPromise() 使其作業,但由于 toPromise 被標記為已棄用。如何使用 lastValueFrom() 以便它可以產生相同的結果。
canActivate(
_route: ActivatedRouteSnapshot,
_state: RouterStateSnapshot
):
| Observable<boolean | UrlTree>
| Promise<boolean | UrlTree>
| boolean
| UrlTree {
const token: string | null = this.cookieService.getCookie('webguard-token')
const tokenValidated = token === null ? '' : token
return this.webguardService
.validateUserHasPermission('IsModerator')
.toPromise()
.then(async () => {
return await this.webguardService
.validateToken(tokenValidated)
.toPromise()
.then(() => {
return true
})
.catch(() => {
window.location.replace('/webguard/login/')
return false
})
})
.catch(() => {
window.location.replace('/webguard/login/')
return false
})
}
我嘗試使用 lastValueFrom() 但 canActivate() 不是異步函式。我不知道如何在 canActvate() 中使用 lastValueFrom()。
uj5u.com熱心網友回復:
lastValueFrom()是一個包裝 Observable 的函式:
return lastValueFrom(this.webguardService.validateUserHasPermission('IsModerator'))
.then(async () => await
lastValueFrom(this.webguardService.validateToken(tokenValidated))
.then(...)
順便說一句,您可以只使用 RxJS Observable 和 chain 以及類似的運算子來做同樣的mergeMap()事情catchError()。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/533296.html
上一篇:在嵌套函式中讀取泛型型別的屬性
