
用Promise.all就行了, 比如:
return Promise.all([
ac.getEvalData(),
ac.getLabData(),
ac.getProdData()
])
等待多个接口请求返回后在执行的逻辑可以这样写:
return Promise.all([
ac.getKeyFocusLabRoomTeacher(),
ac.getKeyFocusEvalTeacher(),
]).then((res: any) =>{
console.log("接口请求的数据都回来了",res)
})
方法里边就是请求的接口
const ac = {
getKeyFocusLabRoomTeacher: function () {
return Http.get('/labroom/api/TeacherMiniProgram/GetKeyFocusTeacher', { StdetailID: state.stid, IncludeAll: false }).then((res: any) => {
console.log("实验老师重点关注数据:", res)
state.teachingDynamics = res.data
})
},
getKeyFocusEvalTeacher: function () {
return Http.get('/evaluation/api/Report/GetWarningClassCourseListByTeacher', { STID: state.stid }).then((res: any) => {
console.log("评估老师重点关注数据:", res)
// state.teachingDynamics = res.data
})
}
}
这样写的话Promise.all里边的then是拿不到这两个请求的返回值的,还要单独处理一下,不过这两个接口都有独立的数据赋值,这样其实也可以在Promise.all的then里边去一起处理数据,其实就是需要那一个时间点,就是多个接口请求完成之后的一个时间点。
这样使用也行,各自里边的方法直接拿到返回值,然后在return回去,然后在Promise.all的then里边就可以拿到这两个异步请求的返回值了
const GetEvalStatisticsByCourseIds = async (_courseIds:Array<string>)=>{
let url = '/evaluation/api/ProjectTeach/GetStuCourseCompleteReps'
const result: any = await request.post(url,_courseIds)
// 拿到返回值,在return
return result
}
const GetLabRoomStatisticsByCourseIds = async (_courseIds:Array<string>)=>{
let url = '/labroom/api/Statistics/GetStudentStatisticsByCourseIds'
const result: any = await request.post(url,{courseIds:_courseIds})
// 拿到返回值,在return
return result
}
Promise.all([
GetEvalStatisticsByCourseIds(evalIds),
GetLabRoomStatisticsByCourseIds(labRoomIds),
]).then((res: any) =>{
// 这里边就可以拿到这两个异步请求的返回值了,就可以在这里边进行处理了
console.log("接口请求的数据都回来了",res)
})
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)
评价
排名
9
文章
120
粉丝
5
评论
5
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术