async-函数

3次阅读

共计 739 个字符,预计需要花费 2 分钟才能阅读完成。

含意

ES2017 规范引入了 async 函数,使得异步操作变得更加不便。

async 函数是什么?一句话,它就是 Generator 函数的语法糖。

前文有一个 Generator 函数,顺次读取两个文件。

读取文件进行解决,是这样写的。

const readFile = function (fileName) {return new Promise(function (resolve, reject) {fs.readFile(fileName, function(error, data) {if (error) return reject(error);
      resolve(data);
    });
  });
};

const gen = function* () {const f1 = yield readFile('/etc/fstab');
  const f2 = yield readFile('/etc/shells');
  console.log(f1.toString());
  console.log(f2.toString());
};

下面代码的函数 gen 能够写成 async 函数,就是上面这样。

const asyncReadFile = async function () {const f1 = await readFile('/etc/fstab');
  const f2 = await readFile('/etc/shells');
  console.log(f1.toString());
  console.log(f2.toString());
};

一比拟就会发现,async 函数就是将 Generator 函数的星号(*)替换成 async,将 yield 替换成 await,仅此而已。

async 函数对 Generator 函数的改良,体现在以下四点。
具体的四点内容
ES6 教程
TypeScript 教程

正文完
 0