1、不存在继发关系的异步操作,同时触发
例1:
let [foo, bar] = Promise.all([getFoo(), getBar()]);
例2:
let fooPromise = getFoo();
let barPromise = getBar();
let foo = await fooPromise();
let Bar = await barPromise();
2、向多个链接发起请求,并发形式(建议用Promise.all)
例1:
async function dbFun() {
const dbUrl = [{}, {}, {}];
let promises = dbUrl.map(url => {
return db.get(url)
})
let result = []
for(let promise of promises) {
result.push(await promise)
}
console.log(result)
}
dbFun().then()
例2 用Promise.all:
async function dbFun() {
const dbUrl = [{}, {}, {}];
let promises = dbUrl.map(url => {
return db.get(url)
})
let result = await Promise.all(promises)
console.log(result)
}
dbFun().then()
3、向多个链接发起请求,继发形式
例:
async function dbFun() {
const dbUrl = [{}, {}, {}];
for(let url of dbUrl) {
await db.get(url)
}
}
dbFun().then()
要领:若要并发执行,则要先让所有异步操作执行,进入pending状态,然后等待await执行一同。
继发形式则直接去遍历执行。