延迟1调用setTimeout的目的是什么
What is the purpose of calling setTimeout with a delay of 1?
在Google Drive API的快速启动指南中,加载客户端库后将调用以下函数:
// Called when the client library is loaded to start the auth flow.
function handleClientLoad() {
window.setTimeout(checkAuth, 1);
}
像这样延迟1调用setTimeout
而不是立即调用checkAuth
的目的是什么?
Javascript具有异步I/O(ajax/请求)以及setTimeout
和setInterval
、
用1毫秒(或0)运行setTimeout
的一个用途是告诉代码在之后运行,然后是它后面的同步代码
setTimeout(function(){
alert("World");
},1);
alert("Hello");
//alerts "Hello" then "World"
我想让我的答案简单明了,如果你感兴趣的话,在MDN关于setTimeout的文章中有更多关于它如何工作的细节
通过使用setTimeout
,您可以在checkAuth
函数完成之前让页面进行交互。
从本质上讲,您是在防止checkAuth
占用页面。
附带说明一下,HTML5规范中指定的最小延迟是5ms,因此1ms的等待实际上就是5ms的等待。如果回收时间对您来说很重要,那么使用window.postMessage
可以在0ms延迟的情况下获得相同的结果。这最初是为了处理跨源通信而设计的,但其效果与设置0ms的超时类似(在一些较旧的浏览器中,浏览器只允许5ms或10ms,因此无法做到这一点)。
最后,时间没有保证。JavaScript在一个线程上运行,所以当你把一些东西推到计时器上时,它必须等待JavaScript其余部分的执行打开,然后才能在线程上运行——它不是并行运行的。
setTimeout(function, 1)
将使function
在当前执行线程完成后运行。浏览器窗口中的JavaScript在单个线程中运行。因此,即使超时为1,它也要等到当前执行结束后才能运行。例如,考虑以下脚本:
window.setTimeout(checkAuth, 1);
// long code that takes 5 seconds to complete
function checkAuth() {
alert("i m here!");
}
在上面的示例中,您将在5秒钟后看到警报。
- 这是什么 ==- javascript 运算符
- 我的单元测试选项是什么
- 打破承诺链的好方法是什么
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Javascript中的空白是什么
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- 在JavaScript中拆分日期字符串的更好方法是什么
- 将jQuery.ech()方法转换为本地JavaScript抽象的最佳方法是什么
- 处理浮点错误的最佳方法是什么
- javascript导入的最佳实践是什么
- 基于窗口宽度jquery的函数的替代方法是什么
- 在ng重复循环中显示条件内容的最佳方式是什么
- 我的客户端选项是什么
- 这是什么“;要求“;事情
- 未捕获的类型错误:topFrame.window.changeSelectedBarStyle不是函数,原因是什么
- 实现比较方法的最佳实践是什么;s的比较类型是在运行时选择的
- 这个奇怪的setTimeout语法是什么
- setTimeout执行的函数是什么?
- 延迟1调用setTimeout的目的是什么
- 在Javascript中,setTimeout中使用的变量的作用域是什么?