Javascript 的 setTimeout 函数让我重新评估我对 javascript 的了解。今天早些时候,我遇到了这样的 for 循环:
for (i = 0; i < length; i++) {
setTimeout(executeOtherCode, 5000)
}
我期望这段代码做的是执行 executeOtherCode 函数,“休眠”5 秒,然后继续下一次迭代。相反,我得到的是同时执行长度时间的 executeOtherCode。
所以据我了解,setTimeout 是一个异步函数调用。这个对吗?然而,如果我要执行一个常规函数,我们称之为 hugeFunction(),它需要 1 分钟才能执行,下一行代码在该函数返回之前不会执行,对吗?那么为什么两者不同呢?只是语言设计的选择?
我已经看到 jQuery 中的其他函数以类似的异步方式运行,例如 getJSON。仅仅是知道哪些函数被定义为异步的问题,还是有某种模式可以识别它们?如果是这样,是什么?