Angular 如何将promise then()/catch()结果返回给包含promise的函数?
在我的情况下,我使用auth-guardAngular 如何将promise then()/catch()结果返回给包含promise的函数?,angular,typescript,Angular,Typescript,在我的情况下,我使用auth-guardCanActivate()限制用户对每个路由的访问,但是条件值取自http请求承诺对象。如何访问Promise then()和catch()并将其返回到CanActivate():Boolean函数 我的代码看起来像这样 // On AuthService verfifyUser(): Promise<any> { return this.http .get(`api/auth/verify-user`, { headers
CanActivate()
限制用户对每个路由的访问,但是条件值取自http请求承诺对象。如何访问Promise then()和catch()并将其返回到CanActivate():Boolean
函数
我的代码看起来像这样
// On AuthService
verfifyUser(): Promise<any> {
return this.http
.get(`api/auth/verify-user`, { headers: this.headers })
.toPromise()
.then(res => res.json() as any);
}
// On AuthGuardService
CanActivate(): Boolean {
this.authSrv.verfifyUser(some_user).then(result => {
// return true
}).catch(err => {
// return false
});
}
//在AuthService上
承诺{
返回此文件。http
.get(`api/auth/verify user`,{headers:this.headers})
.toPromise()
.then(res=>res.json(),如有);
}
//关于AuthGuardService
CanActivate():布尔值{
this.authSrv.verfifyUser(某些用户)。然后(结果=>{
//返回真值
}).catch(错误=>{
//返回错误
});
}
我仍然不知道如何解决这个问题。接口的
canActivate
方法的返回类型是Observable | Promise | boolean
您可以使用canActivate():Promise
version并返回承诺。在函数中,您可以编写
canActivate() : Promise<boolean> {
return new Promise( resolve => {
this.authSrv.verfifyUser(some_user).then(result => {
resolve(true);
}).catch(err => {
resolve(false);
});
});
}
canActivate():承诺{
返回新承诺(解决=>{
this.authSrv.verfifyUser(某些用户)。然后(结果=>{
决心(正确);
}).catch(错误=>{
决议(假);
});
});
}
接口的canActivate
方法的返回类型为Observable | Promise | boolean
您可以使用canActivate():Promise
version并返回承诺。在函数中,您可以编写
canActivate() : Promise<boolean> {
return new Promise( resolve => {
this.authSrv.verfifyUser(some_user).then(result => {
resolve(true);
}).catch(err => {
resolve(false);
});
});
}
canActivate():承诺{
返回新承诺(解决=>{
this.authSrv.verfifyUser(某些用户)。然后(结果=>{
决心(正确);
}).catch(错误=>{
决议(假);
});
});
}
您好,我会试试这个,但对结果很好奇,在“{path:'some path/”,component:ClientComponent,canActivate:[AuthGuard]}”上使用它仍然有效?@ShiftN'Tab当然可以,这是canActivate
函数的一个变体。在这里,我会尝试这个,但对结果很好奇,在{path:'some path/',component:ClientComponent,canActivate:[AuthGuard]}上使用它仍然有效?@ShiftN'Tab是的,这是canActivate
函数的一个变体