アロー関数式と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();