javascript - JavaScript 中的意外 setTimeOut() 函数行为
问题描述
我在 Javascript MCQ 测试中遇到了这个简单的(或我认为的)问题:
After how much time will the following code execute entirely?
setTimeOut(console.log("hi"),1000);
setTimeOut(console.log("hi"),1000);
setTimeOut(console.log("hi"),1000);
setTimeOut(console.log("hi"),1000);
setTimeOut(console.log("hi"),1000);
Options
A) 1 second
B) 2 seconds
C) 4 seconds
D) 5 seconds
我作为选项回答,D) 5 seconds
因为上面的每一行都需要 1000 毫秒来执行,即总共 5000 毫秒 = 5 秒
但在结果中,它说实际答案是 Option A) 1 second
。
我在控制台中执行了这五行(总共),整个代码在 1 秒后执行,就像答案所说的那样。
我不明白正确答案背后的逻辑,以及为什么我的推理是错误的。
解决方案
因为 setTimeout 是异步工作的,这意味着这 5 个语句将同时执行,所有这些语句都将开始等待 1 秒。一秒钟后所有将被执行。希望它清除。
推荐阅读
- python-3.x - 通过字典列表过滤,使用 Python 在 mongoDB 中查找数据
- c - C语言中的一个函数不起作用,是什么原因?
- c++ - QObject 与 std::vector 连接错误
- amazon-web-services - AWS SES 模板中是否有预定义的模板参数
- excel - VBA 如果值与特定 Dim 的名称相同,则获取值的 Dim
- sql - 默认日期雪花:无效标识符“日期”
- github - Raku 的 VS Code 中的多行注释
- c# - 使用 EF6 和 MySQL 克隆实体时出现死锁
- vba - 根据内容选择组合框中的项目
- python - Span 的内联 pandas_bokeh 语法