关于VUE 异步函数同步调用处理的问题
业务场景:需要多次请求http接口调用,且存在依赖关系譬如 axios.post() 调完接口返回的数据接着给下面的接口调用使用Promise解决问题letpromiseSource=this.getPersonPhoto(sourceRoutePoints.slice(0,2),sourcePvid,0)letpromiseTarget=this.getPersonPhoto(targetRou
业务场景:需要多次请求http接口调用,且存在依赖关系
譬如 axios.post() 调完接口返回的数据接着给下面的接口调用
使用Promise解决问题
let promiseSource = this.getPersonPhoto(sourceRoutePoints.slice(0, 2), sourcePvid, 0)
let promiseTarget = this.getPersonPhoto(targetRoutePoints.slice(0, 2), relPvid, 1)
Promise.all([promiseSource, promiseTarget]).then(res => {
//在这写你的剩下的业务逻辑
//还可以再发http请求,那也不害怕了,你已经拿到依赖数据了
}
getPersonPhoto (points, pvid, type) {
//..........中间的组装参数的过程我就省略了
// 根据时间数组,拼接url参数
let timeParamArr = eventTimeList.map((value, index) => {
return {'shotTimeList': value}
})
timeParamArr.push({pvid: pvid})
let getPhotosUrl = composeUrl(serviceUrl.personPhotoUrl, timeParamArr)
return new Promise(function (resolve, reject) {
axios.post(getPhotosUrl)
.then(res => {
console.log('res', res)
resolve(res)
})
.catch(error => {
console.log(error)
})
// return resData
})
}
重要的熟这个return new Promise resolve(res)作为一个接应函数
然后上面的
Promise.all([promiseSource, promiseTarget]).then(res => {
//在这写你的剩下的业务逻辑
//还可以再发http请求,那也不害怕了,你已经拿到依赖数据了
}这段代码可以接应多个new Promise ,因为我的是两个,因此你可以在all里面传两个promise参数进去!
然后完美解决异步函数同步调用的问题
更多推荐
所有评论(0)