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>
  • 相关阅读:
    LeetCode 264. Ugly Number II
    LeetCode 231. Power of Two
    LeetCode 263. Ugly Number
    LeetCode 136. Single Number
    LeetCode 69. Sqrt(x)
    LeetCode 66. Plus One
    LeetCode 70. Climbing Stairs
    LeetCode 628. Maximum Product of Three Numbers
    Leetcode 13. Roman to Integer
    大二暑假周进度报告03
  • 原文地址:https://www.cnblogs.com/jkisjk/p/qwrpa_lazyApply.html
Copyright © 2011-2022 走看看