////decorator// function aopFunc (target, key, descriptor) { console.log('aopFunc') } class foo { @aopFunc bar () { console.log('fooo') } } ///// ///generator/// function* asyncFunc () { var index = 0; while (index < 3) { yield index++ } } var func = asyncFunc() var result while(result = func.next(), !result.done) { console.log(result.value) } //// /////async/await/ async function sleep(ms) { return new Promise((resolve) => { setTimeout(resolve, ms) }) } (async function() { console.log('Do some thing, ' + new Date()) await sleep(3000) console.log('Do other things, ' + new Date()) })() // //async/await function timeout(ms) { return new Promise((resolve) => { setTimeout(resolve, ms); }); } async function asyncPrint(value, ms) { console.log('before hello world') await timeout(ms); console.log(value) console.log('after hello world') } asyncPrint('hello world', 3000) //