【发布时间】:2020-02-05 18:40:50
【问题描述】:
我不清楚nodeJS中如何允许进程更新,例如:
var cancelled = false;
setTimeout(() => cancelled = true,1000);
function main()
{
var ret = []
var totalStart =Date.now();
for(var i=0;i<20;i++) {
var v
var start = Date.now();
while((Date.now()-start)<100)
{
v = Math.sqrt(Math.random());
}
ret.push(v);
if(cancelled) break;
}
console.log("delta:"+(Date.now()-totalStart));
return ret;
}
var r = main()
console.log(r.length)
程序在 2000 毫秒后结束,但由于超时,它应该在 1000 毫秒后结束……什么工作不正常?
【问题讨论】:
-
仍然没有答案,为什么节点没有简单的方法将同步函数转换为异步,也许添加一个类似 DoEvents() 的函数?
-
setTimeout没有说“停止每个线程并在超时时间到时立即运行我的超时回调”,它只是说“这是我应该等待的最短时间,直到尝试执行一次回调事件循环有处理时间。”for语句被阻塞,while loops are blocking。
标签: javascript node.js