ES7: async/await
async関数は実行するとPromiseが返る。
何もreturnしなくてもresolve扱いになるし、何か値をreturnすると、その値をもってresolveされる。
function multiplyBy2(number) { return new Promise((resolve, reject) => { setTimeout(() => { resolve(number * 2); }, 1000); }); } async function tryAsync() { let v = 100; v = await multiplyBy2(v); v = await multiplyBy2(v); v = await multiplyBy2(v); return v; } tryAsync() .then((result) => { console.log(result);// 800 });
ちなみにthrowするとreject扱いで返される。
async function tryError() { let v = 100; v = await multiplyBy2(v); throw new Error("Error!!"); } tryError() .then((result) => { console.log(result); }) .catch((e) => { console.log(e);// 👉こっちくる });