let sleep = function(num){ return new Promise((resolve,reject) => { setTimeout(() => { resolve() },num) }) } sleep(2000).then(() => { console.log('执行') }) let sleep2 = function* (num){ yield new Promise((resolve,reject) => { setTimeout(() => { resolve() },num) }) } sleep2(2000).next().value.then(() => { console.log('generator 实现') }) let sleep3 = function(cb,time){ setTimeout(() => { cb && cb() },time) } sleep3(function(){ console.log('es5实现方式') },2000)