需求:因项目需求,需要用到定时器setTimeout来掩饰处理某个逻辑,但我发现setTimeout却立即执行了

下面主要梳理一下setTimeout的用法:

简单例子:

setTimeout("alert('对不起, 要你久候')", 3000);

3秒后会显示一个弹窗。

咱们经常会用setTimeout执行一个函数,我之前的调用方法

setTimeout(this.clearData(), 3000);

但是这样写,会立刻调用clearData()方法,并没有延迟效果。

原因在于:setTimeout的第一个参数必须是字符或者是函数体,不能是可执行的方法,若是可执行的方法,这里会立即执行,没有延迟效果。

所以要实现延迟效果,上面的代码可以改为:

var _this = this;
setTimeout(function() {_this.clearData();
}, 5000);

这里注意:setTimeout中不能用this调用外部函数,setTimeout下this指windows

解决方法:外部将this赋值给一个变量,例如: var _this = this;

更简单的一种情况可以使用箭头函数

setTimeout(() => {this.clearData();
}, 5000);

因为箭头函数中this指向的是箭头函数声明时作用域的this。

setTimeout是立即执行吗相关推荐

  1. 深入解析Node.js setTimeout方法的执行过程

    深入了解setTimeout源码之前,本有两个选择.一是通过chromium源码分析,二是通过Node.js源码分析.后来发现第一种方案的源码获取成本太大,于是从Node官网获取了几十兆的代码用来了解 ...

  2. 【Day02】测试 Primise、setTimeout等的执行顺序

    面试题 请写出下面代码执行的结果 console.log(1); setTimeout(() => {console.log(2);process.nextTick(() => {cons ...

  3. js关于setTimeout实现延时执行函数并进行传参

    传参方式一:setTimeout第一个参数可以是一段JS的代码字符串片段,第二个参数为延迟时间单位ms <script> function ab() { var a=1; var b =1 ...

  4. 如何使用定时器settimeout、setInterval执行能传递参数的函数(转)

    来自: http://www.cnblogs.com/wkylin/archive/2012/09/07/2674911.html var userName="jack"; //根 ...

  5. Vue超实用案例1:使用setTimeout实现延迟执行代码

  6. for循环中执行setTimeout问题(任务队列的问题)

    for(var i=0;i<8;i++){setTimeout(function () {console.log(i)},0)} 输出了8次8,这跟js的执行顺序和作用域链有关. 规则: 同步优 ...

  7. 利用setTimeout方法控制JS中方法的执行顺序

    JS方面中有A和B方法,B必须在A执行完之后才能执行,怎么保证呢? 1.首先设一个标志(isAFinish),用来标识A是否执行完. 2.B方法执行的时候,判断 var isAFinish=false ...

  8. Vue中使用定时器setInterval和延迟执行setTimeout

    js中定时器有两种,一个是循环执行setInterval,另一个是定时执行setTimeout 一.循环执行(setInterval) 顾名思义,循环执行就是设置一个时间间隔,每过一段时间都会执行一次 ...

  9. ajax请求必须打断点才能成功,Jquery等待ajax执行完毕继续执行(断点调试正常,运行异常)...

    以前写过一个程序,发现用断点调试的时候,一步步的运行,程序是可以的,但是去了断点程序就出现了问题. $(document).ready(function(){ var arra=new Array() ...

最新文章

  1. poj12月其他题解(未完)
  2. 遥感图像处理-阴影检测
  3. 技术胖1-4季视频复习— (看视频笔记)
  4. 萌新的Python练习菜鸟100例(十七)输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
  5. 双系统安装和ros安装踩坑
  6. python画柱状图-Python:Matplotlib 画曲线和柱状图(Code)
  7. java获取不到ipv6的网卡
  8. 30. 确保目标空间足够大
  9. 不忘初心,成于自渡——记录2020年的自己
  10. java ee jpi是什么,JPI 150、300、600RF、RJ什么意思
  11. pc端的微信dat文件解码转换成普通图片
  12. getline 两次回车 解决办法
  13. HTMLday2旅途
  14. 2012年移动SEO启示
  15. 小白mybatis学习(三)输出结果配置
  16. 总结两年半银行软件开发外包项目历程-JAVA程序员
  17. 【Kaggle】Kaggle平台使用方法
  18. 中文繁体字与简体字转换
  19. 什么是mysql的索引_什么是索引?mysql目前索引有哪些?
  20. Error: No matching distribution found for swig

热门文章

  1. ntohs函数的意思
  2. OpenJudge NOI 1.13 08:特殊日历计算
  3. idea中terminal使用npm报不是内部或外部命令,也不是可运行的程序 或批处理文件。
  4. 华为eNSP vlan综合实验
  5. Mac版本EXCEL导入数据 (Excel真香)
  6. java计算机毕业设计理发预约系统源代码+数据库+系统+lw文档
  7. linux配置jdk环境变量遇到的超级大坑
  8. document.get:fail Error: cannot find document with _id xx, please make sure that the document exists
  9. 【HTML/CSS】从放弃到入门-笔记2
  10. 全民英雄安卓版v2.3.8下载