`
bazhuang
  • 浏览: 149337 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

javascript中的函数(方法)延时执行的实现

阅读更多

最近一直在重复发明轮子,又碰到了一个需要用到类似sleep函数的函数,可javascript中并没有提供函数暂停执行Nms的方法,只能自己利用setInterval实现一个类似的功能。

js 代码
  1. delay = function(fn,parm,scope,config){   
  2.     var start = new Date();   
  3.     var zero_interval = null;   
  4.     var config = config || [];   
  5.        
  6.     var h = function(){   
  7.         if(new Date()-start >=parm){   
  8.             clearInterval(zero_interval);   
  9.             fn.apply(scope,config);   
  10.         }   
  11.     }   
  12.   
  13.     zero_interval = setInterval(h,parm);   
  14. }  

参数说明如下,fn是延时之后待执行的函数,parm是延时的时间(最后的延时时间会在此基础上增加10-15ms),scope是fn函数的作用范围,config是fn函数的参数。

用法如下:

js 代码
  1. var startT;   
  2. function delayShow(){   
  3.     startT = new Date();   
  4.     delay(show,20);   
  5. }   
  6.   
  7. function show(){   
  8.     alert(new Date() - startT);   
  9. }  

这里得到的提示是31ms的样子,不过在我自己的代码中只是需要延时一下,而不需要严格控制时间的长短。所以这个时间也就没必要细究了。

我自己程序中的代码如下:

js 代码
  1. ZERO.delay = function(fn,parm,scope,config){   
  2.     var start = new Date();   
  3.     var zero_interval = null;   
  4.     var config = config || [];   
  5.     var scope = scope || window;   
  6.        
  7.     var h = function(){   
  8.         if(new Date()-start >=parm){   
  9.             clearInterval(zero_interval);   
  10.             fn.apply(scope,config);   
  11.         }   
  12.     }   
  13.   
  14.     zero_interval = setInterval(h,parm);   
  15. }   
  16.   
  17.   
  18. ZMenu.prototype.onMouseOver = function(){   
  19.     this.addClass("mouseoverstyle");   
  20.     this.hiddenMenu = false;   
  21.     if(this.hasChild){   
  22.         this.click();   
  23.     }   
  24. }   
  25.   
  26. ZMenu.prototype.onMouseOut = function(){   
  27.     //此处需要延时一段时间再执行   
  28.     if(this.hasChild){   
  29.         ZERO.delay(this.hideChildMenu,20,this);   
  30.         this.hiddenMenu = true;   
  31.     }   
  32.     else{   
  33.         this.hiddenMenu = true;   
  34.         this.hideChildMenu();   
  35.     }   
  36. }   
分享到:
评论
1 楼 gems 2007-12-01  
既然是执行一次,为什么不用setTimeout呢

相关推荐

    javascript延时执行跳转或执行函数

    1. `setTimeout`函数:这是一个内建的JavaScript函数,用于在指定的毫秒数后调用一个函数或执行某段代码。其基本语法是`setTimeout(function, delay)`, 其中`function`是要执行的函数,`delay`是延迟的时间,单位为...

    js延时函数 JS延时

    在JavaScript编程领域,延时函数(也常被称为定时器或延迟执行函数)是开发者们频繁使用的工具之一。它们主要用于控制代码的执行顺序,为异步操作提供必要的等待时间,从而实现更加灵活和高效的程序设计。根据给定的...

    javascript延时重复执行函数 lLoopRun.js

    "javascript延时重复执行函数 lLoopRun.js" JavaScript 延时重复执行函数 lLoopRun.js ...lLoopRun 函数是一个非常有用的 JavaScript 函数库,可以帮助开发者快速实现各种 JavaScript 开发场景中的延时重复执行功能。

    js延时方法

    在标准的JavaScript环境中,已经提供了`setTimeout`函数来实现延时功能。然而,自定义延时方法能够提供更多的灵活性和控制能力,比如更直观地传入秒数而非毫秒数进行延时,这在某些情况下可以使代码更加易读和维护。...

    Javascript Function对象扩展之延时执行函数

    然而,在实际项目中,为了遵循DRY(Don't Repeat Yourself)原则,减少重复代码,提高代码可读性和维护性,可以通过扩展JavaScript的`Function`原型对象来添加一个通用的延时执行方法。 #### 延时执行的需求分析 ...

    利用setTimeout解决延时执行某操作

    setTimeout,javascript 延时执行函数,闭包处理 利用javascript闭包处理延时操作

    JavaScript常用函数列表

    以上列举的JavaScript函数涵盖了从用户交互到页面管理、数学运算、字符串操作以及浏览器信息获取等多个方面,是开发网页应用时不可或缺的工具集。掌握这些函数的使用方法,对于提升网页的交互性和功能性具有重要意义...

    Javascript延迟执行实现方法(setTimeout)

    综上所述,`setTimeout`在JavaScript中是一个非常重要的函数,它不仅可以用来实现简单的延时操作,还能在实际开发中优化性能,减少不必要的计算和网络请求,提升用户体验。通过合理地使用`setTimeout`,可以有效地...

    javascript经典特效---函数计算.rar

    在这个"javascript经典特效---函数计算"的资源中,我们可以深入探讨JavaScript函数在实现各种特效时的重要作用。 1. **函数基础**:在JavaScript中,函数是一组相关语句的集合,可以被命名并多次调用。函数定义了可...

    javascript函数

    这种特性使得函数能够保留状态,实现私有变量和延时执行等功能。 作用域决定了变量的可见性和生命周期。全局作用域的变量在整个脚本中都是可访问的,而局部作用域的变量仅在其定义的函数内可见。每当函数被调用时,...

    关于vue.js中实现方法内某些代码延时执行

    在本例中,就涉及到了如何利用JavaScript的setTimeout函数,在Vue.js的上下文中实现代码的延时执行。 首先,setTimeout函数是JavaScript中用于实现延时调用的一个函数,它接受两个参数:第一个参数是一个函数,这个...

    如何在 HTML 中调用 JavaScript 函数而不使用 onclick.docx

    在这个例子中,`addEventListener` 方法的第一个参数是事件类型(如 "click"),第二个参数是要执行的函数。 2. 使用匿名函数: ```javascript document.getElementById("myButton").addEventListener("mouseover",...

    javascript实现延时显示提示框特效代码_.docx

    在JavaScript中,我们可以使用`setTimeout`函数来实现延时执行特定操作,比如延迟显示提示框或者控制其他UI元素的动态效果。在这个实例中,我们将探讨如何创建一个延时显示提示框的特效,这个特效不仅限于警告框,还...

    javascript 使用sleep函数的常见方法详解

    本文实例讲述了javascript 使用sleep函数的常见方法。分享给大家供大家参考,具体如下: 一.什么是sleep函数? 花一点时间来聊一下sleep函数,首先什么是sleep函数? sleep是一种函数,他的作用是使程序暂停指定的...

    javascript实现延时显示提示框特效代码

    本文介绍了如何使用JavaScript中的setTimeout函数来实现延时显示提示框特效。这个特效允许开发者设置在一段时间后显示一个提示框,可以应用于用户引导、广告展示等多种场景。 在详细讲解代码前,我们先来理解...

    jQuery中回调函数的原理及实现下

    回调函数是jQuery中一个核心概念,对于理解和优化JavaScript代码的执行流程至关重要。本篇文章将深入探讨jQuery中回调函数的原理及其应用。 回调函数本质上是一个在特定事件发生后被调用的函数,它允许我们将业务...

    javascript实现iframe框架延时加载的方法

    标题中提到的知识点为“JavaScript实现iframe框架延时加载的方法”,说明本文将要讲述的是如何在Web开发中使用JavaScript技术,特别是利用iframe标签来实现内容的延时加载。所谓延时加载,就是指在网页加载过程中,...

    延时重复执行函数 lLoopRun.js

    `lLoopRun.js` 是一个实用的JavaScript函数库,主要用于实现延时重复执行指定功能的需求。它能够帮助开发者轻松地创建需要周期性执行的任务,同时提供了一个简单的方式来控制任务的执行与停止。 #### 函数定义及...

Global site tag (gtag.js) - Google Analytics