微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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触发器.如果您没有给他们执行的机会,可能会使您的用户界面显得迟缓或无响应.

原文地址:https://www.jb51.cc/js/159001.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐