Node.js v7.6.0 から async と await が --harmony
フラグ無しで使えるようになっています。
以下のような逐次処理を書くときに簡単に書けるようになりました。
async function x() { let total = 0 for (let i = 0; i < 100; i++) { total += await Promise.resolve(i) } return total } x().then(console.log) // 4950
逐次処理ではなくて並列処理をしたい場合は Promise.all を使うとよいでしょう。
function sleep(ms = 0) { return new Promise(r => setTimeout(r, ms)) } // async をつけて Promise を return する async function y() { for (let i = 0; i < 100; i++) { await sleep(1) } } // Promise を return しているので async はつけない function z() { const tasks = [] for (let i = 0; i < 100; i++) { tasks.push(sleep(1)) } return Promise.all(tasks) } console.time("y") y().then(() => console.timeEnd("y")) // 151.229ms console.time("z") z().then(() => console.timeEnd("z")) // 10.434ms