美文网首页
回调函数之定时器

回调函数之定时器

作者: 倾国倾城的小饼干 | 来源:发表于2018-04-03 09:45 被阅读0次

定时器基础

setTimeout

第一个参数是一个函数,对于第二个参数,因为js是单线程的,所以一段时间内只能执行一段代码,所以就有了任务队列,这些任务会按照它们添加的顺序执行,而第二个参数指的就是多长时间后把函数添加到任务队列中。如果队列是空的,添加的代码就会立即执行,如果有其他的任务,就会等任务全部执行后再执行。
调用setTimeout后会返回一个id,返回的数字可以是任意值,再次调用就会返回一个不同的数字。可以用来取消setTimeout。

var timeOutId=setTimeout(function(){
    alert('hello world!')
},30)
clearTimeout(timeOutId);

setTimeout的代码都是在全局作用域中执行的,因此函数中的this的值指向window对象。

将setTimeout的时间设置为0,为什么执行顺序仍未是先执行呢?

不能将setTimeout理解为某段时间后执行某段函数。事实上setTimeout真正做的事情是在某段时间后将某个回调函数插入到事件队列中。这个操作并不是js来做,而是由事件触发线程做的,至于单线程执行的js,会在执行完同步的任务后去执行队列中的异步任务。
setTimeout即是将同步任务变成了异步任务,所以即使设置延迟参数为0,这未能代表回调函数就能立即执行,js依然会将全部同步代码执行完之后才去执行回调函数。在这里。同步任务可以简单理解为非异步的立即执行的函数。很明显,循环操作甚至是死循环也是同步任务。

setInterval

只要不取消就会一直执行下去。ID和参数和取消的方式和上面的一样,只是用的比较少。

 var a = 1;
setTimeout(function(){
    a = 2;
    console.log(a);
}, 0);
var a ;
console.log(a);
a = 3;
console.log(a);//输出结果为1、3、2原因是setTimeout是异步函数,会等其他的执行完之后再执行。
var flag = true;
setTimeout(function(){
    flag = false;
},0)
while(flag){}
console.log(flag);//这段代码什么都输不出,因为setTimeout是异步函数,会让后面的先执行,while(flag){}执行的时候,已经是死循环了,所以console.log(flag)什么也输不出。

相关文章

  • 定时器,Math方法

    1.定时器:setTimeout 只执行一次setInterval 循环定时器 2.回调函数:用来接收函数...

  • 回调函数之定时器

    定时器基础 setTimeout 第一个参数是一个函数,对于第二个参数,因为js是单线程的,所以一段时间内只能执行...

  • JavaScript系列之回调函数callback

    JavaScript系列之回调函数callback JavaScript回调函数的使用是很常见的,引用官方回调函数...

  • DPDK编程指南(翻译)( 十一)

    11.定时器库 定时器库为DPDK执行单元提供定时器服务,使得执行单元可以为异步操作执行回调函数。定时器库的特性如...

  • input 的blur事件和其他非表单元素的click时间冲突解

    方法一:在blur的回调函数中加一个定时器,延迟blur回调函数的执行时间,这样的话虽然在点击其他元素的的时候,i...

  • 事件轮询机制

    js 单线程 alert 函数不仅会暂停主线程,而且会暂停定时器定时器回调函数只有在运行栈中的初始化代码全部执行完...

  • JavaScript函数_08回调函数

    回调函数 回调函数(回调),当我们把某个函数作为参数传递给另一个函数的时候,这个函数就是回调函数 回调函数的基本写...

  • Promise

    回调 把一个函数A传给另一个函数B调用,那么A就是回调函数。 回调地狱 回调套回调套回调套回调套回调套回调套回调....

  • 函数指针之回调函数和转移表

    函数指针之回调函数和转移表 《C和指针》261页函数指针的用途: 对不同的数据类型作相同的操作->回调函数 对相同...

  • 回调函数与promise

    回调 把一个函数A传给另一个函数B调用,那么A就是回调函数 具名回调写法 匿名回调写法 多层嵌套的匿名回调(回调地...

网友评论

      本文标题:回调函数之定时器

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