function get_all_categories(callback){
function sleep(milliSeconds) {
var startTime = new Date().getTime();
while (new Date().getTime() < startTime + milliSeconds);
}
sleep(10000);
callback();};
这个方法让他sleep10秒,但是一个一面调用他之后,后面访问的页面也要等10秒了,不解,这不是异步的写法么?
14 回复
function get_all_categories(callback){
setTimeout(10000, callback);
}
把回调交给setTimeout,然后立即返回,定时器到期后自动调用。 这样的做法才是异步,困在一个函数内不返回绝不能称作异步。
@justfly 之所以不能用实现是因为,js部分的代码不能操纵事件循环(每个node.js程序都隐含了一个事件循环,在这里调度了所有的I/O和定时器操作。而且sleep
/setTimeout
完全不是CPU密集(并不是像你想象中的while(now < date)
那样来实现定时器,而是借助于操作系统)。