async / await を使用して、Node.js で同期処理を行います。
Contents
async
async 関数は ES2017 で定義された非同期関数です。暗黙的に promise が返されます。
1 2 3 |
function async user(name, type) { 処理内容 }; |
await
await 演算子は async 関数での promise が返されるのを待機させることができます。
await は async 内で書く必要があります。
node.js の router を使った例
1 2 3 4 5 6 7 8 9 10 11 12 |
router.get('/test', async function(req, res, next) { function getNum(x) { return new Promise(resolve => { setTimeout(() => { resolve(x); }, 2000); }); } let x = await getNum(10); res.render('index', { title: x }); }); |
まとめ
promise でコールバック地獄を回避できていましたが、async / await で、よりリーダブルにコードを書くことができるようになります。
参考
async function - JavaScript | MDN