SetTimeout

2018-04-06  本文已影响0人  李永州的FE

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循环 异步处理任务。
-- 这句话比较难理解

上一篇 下一篇

猜你喜欢

热点阅读