最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

setTimeout学习小结

来源:动视网 责编:小OO 时间:2020-11-27 20:25:27
文档

setTimeout学习小结

大致介绍;今天看了一篇文章,觉得写得不错,所以学习了一下,这篇博客是我自己的理解和总结。原文:你应该知道的 setTimeout 秘密。主要内容。 1、setTimeout原理。 2、setTimeout(function(){..},0)的意义。 3、setTimeout的this指向和参数问题。setTimeout原理。先来看一段代码。最后输出的是1003(可能数字不同,但是都大于1000)。之所以会输出这样的数,是因为执行到setTimeout时,会把其中的代码经过500ms后放到执行队列中,但是之后执行while循环,while循环会占据计算机资源,要占据1000ms,在这1000ms中执行队列中的任务都得等待,直到while循环结束。
推荐度:
导读大致介绍;今天看了一篇文章,觉得写得不错,所以学习了一下,这篇博客是我自己的理解和总结。原文:你应该知道的 setTimeout 秘密。主要内容。 1、setTimeout原理。 2、setTimeout(function(){..},0)的意义。 3、setTimeout的this指向和参数问题。setTimeout原理。先来看一段代码。最后输出的是1003(可能数字不同,但是都大于1000)。之所以会输出这样的数,是因为执行到setTimeout时,会把其中的代码经过500ms后放到执行队列中,但是之后执行while循环,while循环会占据计算机资源,要占据1000ms,在这1000ms中执行队列中的任务都得等待,直到while循环结束。
 本文主要介绍了setTimeout原理;setTimeout(function(){..},0)的意义;setTimeout的this指向和参数问题。具有很好的参考价值,下面跟着小编一起来看下吧

大致介绍

今天看了一篇文章,觉得写得不错,所以学习了一下,这篇博客是我自己的理解和总结

原文:你应该知道的 setTimeout 秘密

主要内容:

 1、setTimeout原理

 2、setTimeout(function(){..},0)的意义

 3、setTimeout的this指向和参数问题

setTimeout原理

先来看一段代码:

最后输出的是1003(可能数字不同,但是都大于1000)

之所以会输出这样的数,是因为执行到setTimeout时,会把其中的代码经过500ms后放到执行队列中,但是之后执行while循环,while循环会占据计算机资源,要占据1000ms,在这1000ms中执行队列中的任务都得等待,直到while循环结束

可以看出setTimeout的原理就是在经过给定的时间后,将任务添加到队列中,等待cpu调度执行,它并不能保证任务在什么时候执行

setTimeout(function(){..},0)的意义

有时候见过这样的代码:

经过前面的学习,我会以为是当代码执行到setTimeout时,会立即将任务添加到执行队列中。其实不然,虽然给定的延迟执行时间是0,但是setTimeout有自己的最小延迟时间(根据浏览器的不同而不同),所以即使写了0s,但是setTimeout还是会在最小延迟时间后才添加任务到执行队列中

设置为0s的作用是为了可以改变任务的执行顺序!因为浏览器会在执行完当前任务队列中的任务,再执行setTimeout队列中积累的的任务

例如:

会产生这样的问题:

可以发现采用第一种写法时,只会获取到键盘按下前,输入框中的内容

产生问题的原因是当我们按下键盘时,JavaScript引擎会执行keydown的事件处理程序,而更新输入框中的值是在此之后执行的,所以当获取输入框中的值(this.value)时,输入框中的值还为更新。

解决方法就是利用setTimeout,在更新了输入框的值后,在获取它的值

setTimeout的this指向和参数问题

setTimeout中回调函数的this是指向window的

例如:

但我们可以利用apply()、call()和bind()来改变this的指向

在setTimeout通常是两个参数,但是它可以由多个参数

例如:

可以看到,这些多的参数就是回调函数中要传入的参数

更多setTimeout学习小结相关文章请关注PHP中文网!

文档

setTimeout学习小结

大致介绍;今天看了一篇文章,觉得写得不错,所以学习了一下,这篇博客是我自己的理解和总结。原文:你应该知道的 setTimeout 秘密。主要内容。 1、setTimeout原理。 2、setTimeout(function(){..},0)的意义。 3、setTimeout的this指向和参数问题。setTimeout原理。先来看一段代码。最后输出的是1003(可能数字不同,但是都大于1000)。之所以会输出这样的数,是因为执行到setTimeout时,会把其中的代码经过500ms后放到执行队列中,但是之后执行while循环,while循环会占据计算机资源,要占据1000ms,在这1000ms中执行队列中的任务都得等待,直到while循环结束。
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top