美文网首页
SetTimeout

SetTimeout

作者: 李永州的FE | 来源:发表于2018-04-06 17:00 被阅读0次

http://blog.csdn.net/qq_23980427/article/details/54578216

关于settimeout要说的事情比较多
https://www.cnblogs.com/giggle/p/5346531.html

http://blog.csdn.net/cxl444905143/article/details/40180491

https://www.cnblogs.com/mercy/articles/2424882.html

除了参数问题,setTimeout还有一个需要注意的地方:被setTimeout推迟执行的回调函数是在全局环境执行,这有可能不同于函数定义时的上下文环境

image.png

再看一个不容易发现错误的例子。

function User(login) {
  this.login = login;
  this.sayHi = function() {
    console.log(this.login);
  }
}

var user = new User('John');

setTimeout(user.sayHi, 1000);

上面代码只会显示undefined,因为等到user.sayHi执行时,它是在全局对象中执行,所以this.login取不到值。

为了防止出现这个问题,一种解决方法是将user.sayHi放在函数中执行。

setTimeout(function() {
  user.sayHi();
}, 1000);

上面代码中,user.sayHi是在函数作用域内执行,而不是在全局作用域内执行,所以能够显示正确的值。

http://blog.csdn.net/cxl444905143/article/details/40180491
讲到了用setTimeout实现 setIntervel,以及他们的具体应用场景----防抖动!!!!注意防抖动最常见的事件scroll,keydown这种频繁触发的事件

http://blog.csdn.net/cxl444905143/article/details/40180491
settimeout(f,0)讲解的非常好,尤其是他的应用场景

http://blog.csdn.net/baidu_24024601/article/details/51862488
这个讲了setintervel的缺点以及用settimeout实现intervel感觉有点绕

http://blog.csdn.net/kingboy2008/article/details/51689079
这篇文章讲的性能问题非常典型,涉及到浏览器线程运行机制

使用定时器分解任务 这个概念要好好理解下

合理使用定时器无疑能够增加页面的整体性能,在处理不需要同步,不需要顺序执行的任务时,可以考虑使用setTimeout代替for循环 异步处理任务。
-- 这句话比较难理解

  • 使用settimeout(f,0)能实现动画的原理是,不断地改变样式,比如宽高不断增大,这样就变成了动画,

  • 还可用于控制事件冒泡中的执行顺序

  • settimeout运行函数中this指向的是window,如果想让他指向当前对象呢
    https://www.cnblogs.com/giggle/p/5346531.html
    1 先保存this到that中,用that
    2 用 bind

相关文章

网友评论

      本文标题:SetTimeout

      本文链接:https://www.haomeiwen.com/subject/mpzaixtx.html