这里需要得到最终的结果就比较令人头疼了,好在es7的async/await异步方案为我们提供了解决方案。
node.js7.6已经原生支持async/await,所以把node更新到7.6以上,就可以放心使用啦。
async 可以声明一个异步函数,此函数需要返回一个 Promise 对象。await 可以等待一个 Promise 对象 resolve,并拿到结果。
代码实现:
async function sleep(timeout) { return new Promise((resolve, reject) => { setTimeout(function() { resolve(); }, timeout); }); } (async function() { console.log('Do some thing, ' + new Date()); await sleep(3000); console.log('Do other things, ' + new Date()); })(); //Do some thing, Mon Feb 23 2015 21:52:11 GMT+0800 (CST) //Do other things, Mon Feb 23 2015 21:52:14 GMT+0800 (CST)