zoukankan      html  css  js  c++  java
  • 让JS函数懒惰执行lazyApply

    我只能说,这是一个很有用的函数。

    输入“1”试试:<input id="test1" value="">
    <script>
    /**
    * 懒惰执行某函数:一直到不得不执行的时候才执行。
    * @method lazyApply
    * @static
    * @param {Function} fun 调用函数
    * @param {Object} thisObj 相当于apply方法的thisObj参数
    * @param {Array} argArray 相当于apply方法的argArray参数
    * @param {int} ims interval毫秒数,即window.setInterval的第二个参数.
    * @param {Function} checker 定期运行的判断函数,传给它的参数为:checker.call(thisObj,argArray,ims,checker)。为空时则表示单纯defer执行<br/>
    对于不同的返回值,得到不同的结果:<br/>
    返回true或1,表示需要立即执行<br/>
    返回-1,表示成功偷懒,不用再执行<br/>
    返回其它值,表示暂时不执行<br/>
    @return {int} 返回interval的timerId
    */
    function lazyApply(fun, thisObj, argArray, ims, checker) {
    var timer = function() {
    checker
    = checker || function() {return true; };
    var verdict = checker.call(thisObj, argArray, ims, timerId);
    if (verdict == 1) {
    fun.apply(thisObj, argArray
    || []);
    }
    if (verdict == 1 || verdict == -1) {
    clearInterval(timerId);
    }
    };
    var timerId = setInterval(timer, ims);
    return timerId;
    }


    lazyApply(
    function(){alert('我很懒,我只说一次啊,你别在这里输入1;');},//懒员工
    null,
    [],
    10,
    function(){return document.getElementById('test1').value=="1";}//勤快的监工
    );
    </script>
  • 相关阅读:
    android onTouchEvent
    AD smart pdf 中文丢失
    c# 定时器
    Android 绘制圆环
    52道Python面试题
    螺旋填数:读入两个整数m,n,输出一个m行n列的矩阵,这个矩阵是1~m*n这些自然数按照右、下、左、上螺旋填入的结果。
    Java经典练习题_Day04
    Java经典练习题_Day05
    Java 面向对象 初探
    Java Array 方法和使用
  • 原文地址:https://www.cnblogs.com/jkisjk/p/qwrpa_lazyApply.html
Copyright © 2011-2022 走看看