之前想要让线程睡眠几秒在继续执行,通常采用sleep()来实现。但是这样会打破nodejs异步非阻塞的机制。效率将会大大下降。 自己实现异步 利用var childProcess = require(‘child_process’);模块,假如我们有两个js文件 1为main.js 2为sleep.js。 步骤1: 子main.js里面添加代码
//非阻塞 function sleep(millSeconds) { var subProcess = childProcess.fork(__dirname + “/subProcess.js”); subProcess.on('message’, function () { subProcess.kill(); emitter.emit("RequestEvent", null, null); //开启请求服务器事件
});
subProcess.send(sleepTime);
}
步骤2: 在sleep.js里面添加代码: /用于创建睡眠的子进程/ function sleep(milliSeconds) { var startTime = new Date().getTime(); while (new Date().getTime() < startTime + milliSeconds);
}
process.on('message’, function (milliSeconds) { sleep(milliSeconds); process.send({}); }); 完成,就这么简单。 process.send()可以附加很多信息。包括JSON串等