• <noscript id="ggggg"><dd id="ggggg"></dd></noscript>
    <small id="ggggg"></small> <sup id="ggggg"></sup>
    <noscript id="ggggg"><dd id="ggggg"></dd></noscript>
    <tfoot id="ggggg"></tfoot>
  • <nav id="ggggg"><cite id="ggggg"></cite></nav>
    <nav id="ggggg"></nav>
    成人黃色A片免费看三更小说,精品人妻av区波多野结衣,亚洲第一极品精品无码,欧美综合区自拍亚洲综合,久久99青青精品免费观看,中文字幕在线中字日韩 ,亚洲国产精品18久久久久久,黄色在线免费观看

    柯里化、原生bind、防抖節(jié)流函數(shù)、實(shí)現(xiàn)promise

    2019-7-25    seo達(dá)人

    如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請點(diǎn)這里

    多參數(shù)柯里
    原生bind
    實(shí)現(xiàn)promise
    防抖節(jié)流函數(shù)
    多參數(shù)柯里化

    參數(shù)fn可以是function(a,b,c){},也可以是function(a,b,c,d,f){}

    // 支持多參數(shù)傳遞
    function progressCurrying(fn, args) {

        var _this = this
        var len = fn.length;
        var args = args || [];
        return function() {
            var _args = Array.prototype.slice.call(arguments).concat(args);
            // 如果參數(shù)個(gè)數(shù)小于最初的fn.length,則遞歸調(diào)用,繼續(xù)收集參數(shù)
            if (_args.length < len) {
                return progressCurrying.call(_this, fn, _args);
            }

            // 參數(shù)收集完畢,則執(zhí)行fn
            return fn.apply(this, _args);
        }
    }

    原生js實(shí)現(xiàn)bind

    Function.prototype.myBind = function(Othis){
      if(typeof this !== "function"){
        return new TypeError("not a function");
      }
      let _this = this;
      let args = [...arguments].slice(1);
      let func = function(){};
      let fBound = function () {
        return _this.apply(this instanceof func ?this:Othis,[...arguments].concat(args));
      }
      func.prototype = _this.prototype;
      fBound.prototype = new func();
      return fBound;
    }

    防抖函數(shù)

    //每wait時(shí)間內(nèi)執(zhí)行一次,若期間被觸發(fā),則重新執(zhí)行
    function debounce(func,wait) {
      var timeout ;
      return function(){
        let args = [...arguments];
        let _this = this;
        if(timeout){
          clearTimeout(timeout);
        }
        timeout = setTimeout(function() {
          func.apply(_this,args);
        }, wait);
      }
    }

    節(jié)流函數(shù)

    //每wait時(shí)間執(zhí)行一次
    function throttle(func,wait){
      var timeStart = 0 ;
      return function(){
        let _this = this;
        let args = [...arguments];
        let now = Date().now();
        if(now - timeStart >wait){
          func.apply(_this,args);
          timeStart = now;
        }
      }
    }

    實(shí)現(xiàn)一個(gè)promise

        function _Promise(func){
            this.status = 'pending'
            this.result = '' ;
            func(this.resolve.bind(this),this.reject.bind(this));
        }
        _Promise.prototype.resolve = function(result){
            if(this.status == 'pending'){
                this.status = 'fullfilled';
                this.result = result;
            }
        }
        _Promise.prototype.reject = function(error){
            if(this.status == 'pending'){
                this.status = 'rejected';
                this.result = error;
            }
        }
        _Promise.prototype.then = function(preResolve,preReject){
            let _isPromise ;
            if(this.status == 'fullfilled'){
                _isPromise = preResolve(this.result);
            }else if(this.status == 'rejected' && arguments[1]){
                 _isPromise = preReject(this.result);
            }
            return _isPromise instanceof _Promise ? _isPromise:this;
        }

    實(shí)現(xiàn)一個(gè)promise.all()

     function promiseAll(promiseArray){
            //首先參數(shù)一定是一個(gè)數(shù)組
            //然后此函數(shù)返回的是一個(gè)promise,如果全部成功,則返回結(jié)果的數(shù)組,只要有一個(gè)失敗,則返回失敗的結(jié)果
            return new Promise(function (resolve,reject){
                if(!Array.isArray(promiseArray)){
                    return reject(new TypeError("not a function"));
                }
                let resolveNum = 0;
                let arrNum = promiseArray.length;
                let resolveResult = [];
                for(let i=0; i<arrNum ;i++){
                    (function (i){
                        Promise.resolve(promiseArray[i]).then(function(result){
                            resolveNum ++;
                            resolveResult.push(result);
                            if(resolveNum == arrNum){
                                return resolve(resolveResult);
                            }
                        },function(error){
                            return reject(error);
                        })
                    })(i);
                }
            }) //返回的promise結(jié)束
            
        }
    藍(lán)藍(lán)設(shè)計(jì)www.lzhte.cn )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、網(wǎng)站建設(shè) 平面設(shè)計(jì)服務(wù)

    日歷

    鏈接

    個(gè)人資料

    存檔

    主站蜘蛛池模板: 日韩中文字幕在线一区| 少妇人妻系列无码专视频区| 丁香六月婷婷久久综合| 久久久亚洲欧洲日产国码AⅤ| 久久久久久久国产精品影院| 真实国产乱子伦清晰对白视频| 在线综合网| 奇台县| 日本美人妻OL美脚OL视频网| 蜜臀亚洲一区在线观看| 日韩在线看片免费观看软件 | 成人综合在线观看| 99久久99久久久精品久久| xxx国产| 亚洲综合色区另类小说久久久| 91国语对白爽死我了| 无码成人片一区二区三区| 人妻免费在线视频一区| 99精品视频在线观看免费专区| 久久99精品久久久久子伦| 亚洲成人日韩av一区| 亚洲国产美女精品久久久久∴| 亚洲人成影网站~色| 中文字幕有码人妻在线| 久爱免费精品视频在线播放| 嫩草91| 狠狠色噜噜狠狠狠777米奇| 久久综合久中文字幕青草| 中文字幕亚洲精品人妻| 天堂三级成人久久av| 国产欧美亚洲另类第一页| av入口一区二区三区| 免费观看无遮挡WWW的视频| 欧美日韩国产成人在线观看| 国产卡一卡二卡三免费入口| 40岁成熟女人牲交片| 国产精品一卡二卡三卡| 一区二区三区国产好的精华液| 国产日韩欧美妖亚欧在线| 日本岛国免费一区二区| 久久午夜福利|