您的位置:首页 > 大数据 > 人工智能

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

2019-01-21 17:21 645 查看

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: