javascript - 如何知道节点 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 之前一直阻塞以及节点在什么条件下表现同步和异步......?
解决方案
您提供的代码段不包含任何异步代码。就像另一个用户提到的那样,for
循环是一个同步代码块,一旦启动,就会运行到完成。在您似乎意味着的异步意义上,循环并不是“阻塞”,它只是在做它应该做的事情。为了进一步了解预期行为,我建议查看 JS Promises(使用 async 和 await)和“并发模型和事件循环”。
希望这可以帮助!
推荐阅读
- javascript - 如何在 JavaScript 驱动的网站上进行网络抓取?
- python - 如何读取类似于json格式的文本文件
- c# - 使用 C# 使用 DataGridView 中的值更新数据库
- c# - 如何通过代码测试某些条件,然后验证或无效并显示错误消息?
- c# - 如何在路径中插入用户名信息?
- python - pytorch 使用 PyCharm 调试超时
- sql - SQL/PLSQL 查询以获取开始日期和结束日期之间的差异总和
- visual-studio-code - 如何配置 Prettier 以将属性与 jsx 元素保持在同一行?
- c# - 在 C# 中将类序列化为 xml 时处理 null
- node.js - 如何在 JWT 中实现权限