アロー関数式とAsync/Awaitを使った非同期処理について、「function」と「Promise」とを比較しながら説明します。

アロー関数式

アロー関数式を使った関数の定義では、通常のfunctionを使った定義が、

let 変数名 = function(引数1, 引数2, ...){
  ...

  return 戻り値;
};

アロー関数式を使うと次のように記述できます。関数で引数を受け取らない場合は括弧だけを記述します。

let 変数名 = (引数1, 引数2, ...)	=> {
  ...

  return 戻り値;
};

アロー関数式の省略形では、引数が 1 つだった場合は引数を囲む括弧 ( と ) を省略できます。また、関数ブロック内で実行する処理が return 文だけだった場合、ブロックをあらわす { と } 、そして return も次のように省略できます。

let 変数名 = (引数1, 引数2, ...) => 戻り値;

Async/Awaitを使った非同期処理

Promiseを使用すると次のようになります。

const promiseFunc = value => {
  return new Promise((resolve, reject) => {
    setTimeout(() => resolve(value), 1000)
  })
}

promiseFunc(1)
  .then((num) => {
    console.log(num);
    return promiseFunc(2)
  })
  .then((num) => {
    console.log(num);
    return promiseFunc(3)
  })
  .then((num) => {
    console.log(num);
  })
//1
//2
//3

同じ処理を、async/awaitを使用すると次のようになります。

const promiseFunc = value => {
  return new Promise((resolve, reject) => {
    setTimeout(() => resolve(value), 1000)
  });
}

const asyncFunc = async () => {
  console.log(await promiseFunc(1));
  console.log(await promiseFunc(2));
  console.log(await promiseFunc(3));
}

asyncFunc();