[英]What is a function executed by setTimeout called?
我目前使用以下函数在事件循环中将函数调用排队:
Function.prototype.async = function () {
setTimeout.bind(null, this, 0).apply(null, arguments);
};
这使我可以编写如下代码:
alert.async("This will be displayed later.");
alert("This will be displayed first.");
现在,我计划将此功能包含在我正在编写的库中。 但是,名称async
似乎是对该函数的不正确描述。 从技术上讲,该函数不是异步执行的。
所以我的问题是,如果setTimeout
执行的函数不是异步的,那是什么? 您如何形容?
我相信defer
将是一个更合适的名称,但我不太确定。
ECMAscript代码在称为UI线程中执行,该UI线程在任何浏览器实现中运行。 基本上,所有UI更新和Javascript代码块都在该线程内共享(这也是为什么长时间运行的Javascript代码会挂起浏览器UI的原因)。
然而,什么样setTimeout
做,只是要排队的功能 插入到该UI线程 。 这就意味着,不能保证您的代码实际上会在xxx毫秒之内执行,只是无法将其压入队列。 如果其他进程仍在运行,或者浏览器在线程中忙碌,则只有执行其他任何处理后,它才会被执行。
我怎么称呼它?
“推迟执行ECMAscript代码”
它在第一个调用结束(背对背)后执行,
并使用set-timeout
绑定,以在第一个事件结束后开始。
因此它是同步的(加入/流入),
我希望我在这里有道理:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.