async 函数
async
表示函数里有异步操作,await
表示紧跟在后面的表达式需要等待结果。
- async 函数的返回值是一个 Promise 对象, 可以使用 then 指定下一步操作.
- 只要一个
await
语句后面的 Promise 变为 reject, 那么整个 async
函数都会中断执行
并发异步请求
1 2 3 4 5 6 7 8
| let [foo, bar] = await Promise.all([getFoo(), getBar()]);
let fooPromise = getFoo(); let barPromise = getBar(); let foo = await fooPromise; let bar = await barPromise;
|
for 循环并发异步请求
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| async function dbFuc(db) { let docs = [{}, {}, {}]; let promises = docs.map((doc) => db.post(doc));
let results = await Promise.all(promises); console.log(results); }
async function dbFuc(db) { let docs = [{}, {}, {}]; let promises = docs.map((doc) => db.post(doc));
let results = []; for (let promise of promises) { results.push(await promise); } console.log(results); }
|
for 循环继发异步请求
1 2 3 4 5 6 7
| async function dbFuc(db) { let docs = [{}, {}, {}];
for (let doc of docs) { await db.post(doc); } }
|
acync 函数中遇到 await 就会等待执行完成后在继续执行接下来的语句, 在 for 循环中也是一样.
for … of
for...of
循环调用遍历器接口,数组的遍历器接口只返回具有数字索引的属性。