我最近在修改节点js及其异步特性,遇到了一些奇怪的事情。这是代码-
let sum = 0;
for(let i=0;i<10000000000;i++){
sum += i
if(i==99999999){
console.log(sum);
}
}
console.log('abc');
根据非阻塞的定义,它不应该等待for循环结果,应该先打印'abc',然后在计算完成后打印sum的值,对吗?但是,这没有发生,程序正在等待for循环完成并打印sum的值,然后打印'abc'。谁能解释这背后的原因?这是由于console.log的工作方式引起的吗?
对IO操作的非阻塞性 IO operations include file read write, network read write, database read write etc.
这由事件循环控制。
For循环不是IO操作,但是,如果您在for循环内部具有IO操作,则将获得无阻塞的味道。
您可以在这里阅读更多内容https://nodejs.org/en/docs/guides/blocking-vs-non-blocking/
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句