首页 > 解决方案 > 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 秒后执行,就像答案所说的那样。

我不明白正确答案背后的逻辑,以及为什么我的推理是错误的。

标签: javascript

解决方案


因为 setTimeout 是异步工作的,这意味着这 5 个语句将同时执行,所有这些语句都将开始等待 1 秒。一秒钟后所有将被执行。希望它清除。


推荐阅读