javascript – 为什么在延迟中使用setTimeout

前端之家收集整理的这篇文章主要介绍了javascript – 为什么在延迟中使用setTimeout前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图了解延迟是如何工作的,因此在所有这些中它们都使用setTimeout.
this.callbacks;// array of functions reference
this.callbacks.forEach(function(callback){
    window.setTimeout(function(){
          callback(data);
    },0);
});

this questions中使用setTimeout的一个示例

resolve: function (data) {
    this.promise.okCallbacks.forEach(function(callback) {
      window.setTimeout(function () {
        callback(data)
      },0);
    });
  },

通过setTimeout调用循环函数与callback()之间的区别是什么?或callback.call();

解决方法

这样做的原因是允许javascript线程有机会触发可能在队列中等待的任何其他事件.

Javascript是单线程的.如果触发了某个事件,则只能在当前运行的代码完成时运行.

使用零时间延迟的setTimeout有效地告诉JS解释器回调函数调用是新上下文的一部分,并且当前代码块已完成.这意味着JS将在调用callback()之前抓住机会检查是否需要处理任何其他事件.

虽然这可能会延迟callback()本身被立即调用,但这对您网站的整体性能有好处:

可能需要处理的其他事件包括单击事件和其他UI触发器.如果您没有给他们执行的机会,可能会使您的用户界面显得迟缓或无响应.

猜你在找的JavaScript相关文章