angular 路由守卫Observable异步请求串联
2024-10-21 09:55:35
假设路由守卫有这种场景
需要使用observable同时发送多个Http 请求,判断request2返回的数据中是否存在request1返回的数据
使用async await
export class testAuth implements CanActivate {
username = localStorage.getItem("username");
EmployeeNo: any;
constructor(
private dpaService: DpaService,
private testService: TestService,
) { }
async canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Promise<boolean | UrlTree> {
try{
if(this.username){
//forkJoin同时发送多个http请求
return await forkJoin([this.dpaService.getUserByEmail(this.username),this.testService.queryAll()])
.toPromise().then((results:any)=>{
//results为多个请求返回的结果数组
this.EmployeeNo = results[0][0].EmployeeNo;
return results[1].filter((element: any)=>element.emplId === this.EmployeeNo).length>0;
});
}
else{
return false;
}
} catch(err){
return false;
}
}
}
最新文章
- SQL 存储过程优化经验
- [已开源/文章教程]独立开发 一个社交 APP 的源码/架构分享 (已上架)
- Sumsets
- XE3随笔11:Merge、Clone、ForcePath
- Js内置对象的应用
- 函数-头文件//Calculator.h
- scala学习笔记——操作符
- Delete website with command.
- (40)JS运动之右下角悬浮框
- RockMongo 安装
- php测试题
- Confluence 6 安装一个语言组件
- 关于decode(";utf-8";)出现编码错的提示
- Redis 队列好处
- 开放本地MYSQL服务器端口
- day32
- Sailing
- ceph 之recovery machhine
- ScaleIO 1.2 基础
- 简单好用的包管理器 brew