2016年11月写过一篇 nodejs中实现sleep功能,暂停几秒 : http://blog.csdn.net/zzwwjjdj1/article/details/53333123
那个时候nodejs版本还不支持await,async,代码比较长,
在nodejs8.0+的版本已经支持await,async就简单很多了.
await,async是基于promise的,所以封装如下
封装代码
common.js
class Ut {
/**
* 异步延迟
* @param {number} time 延迟的时间,单位毫秒
*/
static sleep(time = 0) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve();
}, time);
})
};
}
module.exports = Ut;
使用例子
test.js
let Ut = require("./common");
(async () => {
console.log("开始");
let t1 = +new Date();
console.time("总延迟");
console.time("第一次延迟");
await Ut.sleep(2000);
console.timeEnd("第一次延迟");
console.time("第二次延迟");
await Ut.sleep(4000);
console.timeEnd("第二次延迟");
console.timeEnd("总延迟");
let t2 = +new Date();
console.log(t2 - t1);
})()