async function aaa(){
let a = await some1()
let b = await some2()
//这样的写法是继发的 相当于A执行完毕后再执行B
}
async function aaa(){
let a = some1()
let b = some2()
let aDone = await a
let bDone = await b
//这样的写法是并发的 无先后顺序
}
// 并发的两种写法
// 写法一
let [foo, bar] = await Promise.all([getFoo(), getBar()]);
// 写法二
let fooPromise = getFoo();
let barPromise = getBar();
let foo = await fooPromise;
let bar = await barPromise;
案例
需求是第一个请求是续发,请求成功之后处理两个并发请求,之后在处理相关业务
async reqInOrder() {
try {
// 处理并发
let children = [this.$refs.businessInfo,this.$refs.chainInfo]
//这里数组遍历执行async ,map返回一个以Promise对象为key的数组
const dataPromises = children.map( async child => {
const response = await child.submit()
return response
})
let codeArr = []
//处理Promise数组得到resolve结果
for (const dataPromise of dataPromises) {
codeArr.push(await dataPromise)
}
//处理结果
//every接受一个函数 是否全部满足条件
let flag = codeArr.every(item =>{
return item.code === 1
})
//之后处理相关数据
if (flag) {
this.fullscreenLoading = false
this.getCount()
}
} catch(e) {
console.log(e)
this.$message(e)
}
}
相关文章
终极异步解决方案async,await以及异步并发处理方案
网友评论