用async和await改造项目对异步调用接口的处理

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执行一同。
继发形式则直接去遍历执行。

你可能感兴趣的:(用async和await改造项目对异步调用接口的处理)