JavaScript异步性质

Sushmit Chakraborty

我最近在修改节点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的工作方式引起的吗?

7天

对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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章