浏览器 web api 在 Javascript 中像 setTimeout 一样在哪里运行?
它们是在其他环境中运行还是借助 javascript 单线程?
最佳答案
它们在 JavaScript 运行时之外运行。这些“Web API”在浏览器的 Web API 执行空间内执行。setTimeout()
例如,是 window
的方法对象(它也可以调用为 window.setTimeout()
)。 window
根本不是 JavaScript 的一部分(它是一个浏览器对象)和任何你问的 window
为您做的事情是在 JavaScript 运行时之外以及由浏览器的其他功能处理的。 Web API 调用的请求源自 JavaScript 环境内部,但 API 调用的执行实际上在其外部运行。
这就是我们可以在 Web 应用程序中具有异步行为的原因。当 JavaScript 运行时(它是一个一次只能做一件事的同步环境)做它的一件事时,浏览器可以做其他事情。setTimeout()
, alert()
, navigator.geolocation
, XMLHttpRequest
都是在 JS 引擎之外运行的 Web API 的示例。
这里有一些 other Web API's 和 here is a great video 这在计时器的上下文中具体解释了这一点。
关于javascript - 浏览器 web api 在 Javascript 中运行在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49264524/