• 让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>
  • 相关阅读:
    常用工具
    H5页面验收流程及性能验收标准
    埋点数据测试
    提高效率的必备工具
    移动APP安全测试
    Response响应相关
    AES加密解密
    Requests模块
    爬虫入门
    【CMDB】API传输验证
  • 原文地址:https://www.cnblogs.com/jkisjk/p/qwrpa_lazyApply.html
Copyright © 2020-2023  润新知