超时调用setTimeout 和 间歇调用setInterval

今天看了javascript高级程序设计(第三版)一书,发现说setTimeout比setInterval更好,觉得的确如此。平时都是用setInterval多点,现在还是转一下思路了。又学习到了。笔记如下:

-------------------------------------------------------------------------------------------------------------------------------------------

setTimeout包含两个参数,第一个参数是要执行的代码,第二个参数是时间。

第一个参数可以是字符串也可以是函数,但是推荐使用函数而不是字符串。

使用字符串相当于eval方法。导致性能损失。

clearTimeout()

超时调用的代码都是在全局作用域中执行的,因此函数中this的值在费严格模式下指向window对象,在严格模式下是undefined

//setInvalvar num = 0;var max = 10;var intervalId = null;

function incrementNumber(){   num++;   if(num == max){      clearInterval(innervalId);      alert(‘done‘);   }}

intervalId = setInterval(incrementNumber(),500);

//setTimeout 实现相同功能var num = 0;var max = 10;function incrementNumber2(){   num++;   if(num < max){      setTimeout(incrementNumber2,500);   }else{      alert(‘done‘);   }}setTimeout(incrementNumber2,500);

以上对比可以发现,使用超市调用时,没有必要跟踪超时调用id,因为每次执行代码之后,如果不再设置另一次超时调用,调用就会自行停止。

一般认为,如果超时调用用来模拟间歇调用的是一种最佳模式。

在开发环境下,很少真正的间歇调用,原因是后一个间歇调用可能会在前一个间隙调用结束之前启动。

最好不要使用间歇调用。

时间: 2024-10-08 11:13:22

超时调用setTimeout 和 间歇调用setInterval的相关文章

JS中的间歇调用setInterval()与超时调用setTimeout()相关总结

超时调用需要使用window.setTimeout(code,millisec)方法 它接受两个参数:要执行的代码和以毫秒表示的时间(即在执行代码前需要等待多少毫秒).其中第一个参数可以是一个包含JS代码的字符串(就和在eval()函数中使用的字符串一样),也可以是一个函数.第二个参数表示等待多长时间的毫秒数,但经过该事件后指定的代码不一定会执行. 这是因为JS是一个单线程序的解释器,一定时间内只能执行一段代码,为了控制要执行的代码就有一个JS任务队列,这些任务会按照将他们添加到队列的顺序执行.

定时器 setTimeout()超时调用和 setInterval()间歇调用

JavaScript是单线程语言,但它允许通过设置定时器,也就是设置超时值和间歇时间来调度代码在特定的时刻执行.前者是在指定的时间过后执行代码,而后者则是每隔指定的时间就执行一次代码. 超时调用需要使用window对象的setTimeout()方法,他接受两个参数:要执行的代码和以毫秒表示的时间.其中,第一个参数可以是一个包含JavaScript代码的字符串,也可以是一个函数.例如,下面对stTimeout()的两次调用都会在一秒钟后显示一个警告框: //不建议传递字符串! setTimeout

超时调用与间歇调用

1.首先要清楚,JavaScript是单线程语言,一段时间内只能执行一段代码.因此就有一个JavaScript的任务队列来控制代码的执行顺序.window对象的属性setTimeout()的第二个参数就是告诉JavaScript再过多长时间将当前任务添加到队列中.如果队列是空的,那么添加的代码会立即执行:如果队列不是空的,那么先等到前面的代码执行完后再执行.间歇调用setInterval()与超时调用相似,只不过是重复调用. setTimeout(function(){ alert("Hello

关于JavaScript中的setTimeout()链式调用和setInterval()探索

http://www.cnblogs.com/Wenwang/archive/2012/01/06/2314283.html http://www.cnblogs.com/yangjunhua/archive/2012/04/12/2444106.html 下面的参考:http://evantre.iteye.com/blog/1718777 1.选题缘起 在知乎上瞎逛的时候看到一个自问自答的问题: 知乎上,前端开发领域有哪些值得推荐的问答?,然后在有哪些经典的 Web 前端或者 JavaScr

JavaScript超时调用、间歇调用

超时调用 //onclick设置按钮点击之后要执行的代码地址,fnFun就是要执行的代码函数 <input type="button" value="暂停" onclick="fnFun()"> <script> var fnFun2 = function (){ console.log('fnFun2'); } //参数一:超时后会被调用的函数地址 //参数二:等待时间 //返回值:定时器的ID,可以通过这个ID来终止这

定时器 延时调用setTimeout

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

将同步调用转成异步调用?

有时候同步调用和异步调用同时存在的时候,难免出现混乱. 来看个栗子: function loadReady(callback){ var readyState = document.readyState; if(readyState ==='complete'||readyState==='interactive'){ typeof callback === 'function' && callback(); }else{ window.addEventListener('DOMConte

微服务间的调用和应用内调用的有啥区别

摘要 目前大部分的系统架构都是微服务架构,就算没有注册中心.服务管理,也肯定是多个服务,单体服务比较少了. 大家平时需要在应用内调用rpc接口也比较多,那么有没有思考过微服务之间的调用和应用内直接调用有什么区别呢?面试时是不是经常被被问到微服务呢,本篇文章针对微服务间的方法调用和应用内方法调用的有啥区别这个很小的点,谈谈我的经验 微服务调用特点 先从单体应用说起 单体应用 单体引用通过一个服务节点直接组装好数据,返回给调用者.所有的方法调用都发生在应用内部. 微服务应用 商品详情服务需要调用商品

js调用php和php调用js的方法举例

js调用php和php调用js的方法举例1 JS方式调用PHP文件并取得php中的值 举一个简单的例子来说明: 如在页面a.html中用下面这句调用: <script type="text/javascript" src="b.php?action=test"></script> <script type="text/javascript" > alert(jstext); </script> 在b