【发布时间】:2021-02-09 08:12:57
【问题描述】:
我正在尝试了解浏览器提供给 JS 引擎的 API。
由于 JavaScript 是单线程的,它必须将计时器外包给浏览器,这样代码的执行才不会被阻塞。
因此 JavaScript 必须通过对浏览器的 API 调用来引入计时器功能。 我是对还是错?
【问题讨论】:
-
setTimeout功能在与主线程相同的线程中实现。您可以通过运行一个长的for或while循环来测试它,并查看setTimeout在循环阻塞线程时没有执行。如果您好奇这是如何工作的,请查看我对以下问题的回答:stackoverflow.com/questions/29883525/…、stackoverflow.com/questions/64002700/busy-waiting-in-nodejs/… -
必须在 JavaScript 课上设置Timeout 学习时间......就像这几天第 3 次一样。
-
@slebetman 在执行setTimeout的时候,代码执行没有被阻塞,那怎么能和主线程在同一个线程中实现呢?
-
@epascarello 非常感谢先生。这正是我正在寻找的。span>
标签: javascript settimeout single-threaded