async関数

1388 ワード

意味
ES 2017規格は、非同期動作がより便利になるように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関数の改善は、以下の4点において示されている.詳細は4つです。 ES 6教程 Type Script教程