javascript - JavaScript 中的多线程?
问题描述
我有下一个 JavaScript 代码示例:
var i = 0;
async function asyncFunction() {
i++;
document.write(i + "<br/>");
}
for (var j = 0; j < 1000; j++) {
asyncFunction();
}
<html>
<head>
</head>
<body>
</body>
</html>
Google Chrome 中的输出是:
1
2
3
4
...
1000
它不是:
1
3
2
4
...
1000
999
我正在使用谷歌浏览器,它总是同步的。计划什么时候可以?
解决方案
使用async,不是获取多线程的工具,而是获取单线程并发的工具。如果您想学习如何进行多线程,请查看 WebWorkers(用于在浏览器中开发)或 Node Cluster API(用于 NodeJS)。
代码输出排序:
因为通过调用异步函数,您将它放在微任务队列中,并且在循环完成后,它会以与放置顺序相同的顺序被一一调用。
调用此函数的顺序无关紧要,因为无论顺序如何,每次调用都会将 i 增加 +1。
推荐阅读
- r - 在变量名称上创建循环
- linux - 在文件末尾添加一列,其中包含特定行数的值
- android - 如何获取工具栏的标题文本颜色?
- python - 通过可能包含重复项的 CSV 列进行二进制搜索
- java - RabbitMQ SLF4J:无法加载类“org.slf4j.impl.StaticLoggerBinder”
- java - 自定义(自定义)属性未在 pom 文件中读取
- c# - 如何使用 MediaCapture.VideoDeviceController 控制 UWP 中网络摄像头的曝光或亮度以进行 QR 码扫描
- java - 如何在 Selenium 和 Java 中处理引导日期选择器
- .net - .NET Core Windows 身份验证和 OAuth2
- python - 为什么导入日志会打印当前日期?