首页 > 解决方案 > 如何知道节点 js 的同步和异步行为

问题描述

我试图了解 node.js 的异步行为

let a = (num, callback) => {
    for (let i = 0; i<num; i++) {
        console.log(i);
    }

    callback(num);
}

a(10000, (num) => {
    console.log("num is " + num)
})

console.log("Completed")

上述代码的输出是

1
...
9999
num is 10000
Completed

请你能帮助我理解为什么它在打印 9999 之前一直阻塞以及节点在什么条件下表现同步和异步......?

标签: javascriptnode.js

解决方案


您提供的代码段不包含任何异步代码。就像另一个用户提到的那样,for循环是一个同步代码块,一旦启动,就会运行到完成。在您似乎意味着的异步意义上,循环并不是“阻塞”,它只是在做它应该做的事情。为了进一步了解预期行为,我建议查看 JS Promises(使用 async 和 await)和“并发模型和事件循环”。

希望这可以帮助!


推荐阅读