ES6学习笔记(20)之 async 函数

2019-09-30  本文已影响0人  苦苦修行

参考:ECMAScript 6 入门

使用场景:可以将异步方法以同步的方式执行

let foo = await getFoo();
let bar = await getBar();

正确的写法:

// 写法一
let [foo, bar] = await Promise.all([getFoo(), getBar()]);

// 写法二
let fooPromise = getFoo();
let barPromise = getBar();
let foo = await fooPromise;
let bar = await barPromise;
function dbFuc(db) { 
  let docs = [{}, {}, {}];

  docs.forEach(async function (doc) {
    await db.post(doc);
  });
}

正确的写法应该是什么?请见文章最后。

// x.js
console.log("X1");
await new Promise(r => setTimeout(r, 1000));
console.log("X2");

// y.js
console.log("Y");

// z.js
import "./x.js";
import "./y.js";
console.log("Z");

打印结果是X1、Y、X2、Z
顶层的await命令有点像,交出代码的执行权给其他的模块加载,等异步操作完成后,再拿回执行权,继续向下执行。


思考题答案:

async function dbFuc(db) {
  let docs = [{}, {}, {}];

  for (let doc of docs) {
    await db.post(doc);
  }
}
上一篇 下一篇

猜你喜欢

热点阅读