国产精品爱久久久久久久小说,女人扒开腿让男人桶到爽 ,亚洲欧美国产双大乳头,国产成人精品综合久久久久,国产精品制服丝袜无码,免费无码精品黄av电影,黑色丝袜无码中中文字幕,乱熟女高潮一区二区在线

    柯里化、原生bind、防抖節流函數、實現promise

    2019-7-25    seo達人

    如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

    多參數柯里
    原生bind
    實現promise
    防抖節流函數
    多參數柯里化

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

    // 支持多參數傳遞
    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);
            // 如果參數個數小于最初的fn.length,則遞歸調用,繼續收集參數
            if (_args.length < len) {
                return progressCurrying.call(_this, fn, _args);
            }

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

    原生js實現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;
    }

    防抖函數

    //每wait時間內執行一次,若期間被觸發,則重新執行
    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);
      }
    }

    節流函數

    //每wait時間執行一次
    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;
        }
      }
    }

    實現一個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;
        }

    實現一個promise.all()

     function promiseAll(promiseArray){
            //首先參數一定是一個數組
            //然后此函數返回的是一個promise,如果全部成功,則返回結果的數組,只要有一個失敗,則返回失敗的結果
            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結束
            
        }
    藍藍設計m.dzxscac.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、網站建設 平面設計服務

    日歷

    鏈接

    個人資料

    藍藍設計的小編 http://m.dzxscac.cn

    存檔

    主站蜘蛛池模板: 国产高清卡1卡2卡3麻豆| 69视频在线免费观看| 成人拍拍拍无遮挡免费视频| 欧美一级黑人| 两性色午夜视频免费无码| 青春草av| 日韩av毛片福利国产福利| 成人aⅴ综合视频国产| 免费视频一区| 99久久99久久精品国产片桃花| 欧美最猛性xxxxx大叫| 中文字幕手机在线看片不卡| 久久久精品久久| 美女扒逼| 一本大道无码av天堂| 亚洲а∨天堂男人无码| 在线成人免费| 综合天堂av久久久久久久| 精品国产精品国产偷麻豆| 黄床片30分钟免费视频教程| 国产主播第一页| 日韩手机在线观看| 天堂久久天堂av色综合| 亚洲午夜不卡无码影院| 欧美黄色三级| 蜜臀网在线| 日本人妻丰满熟妇久久久久久| 成人午夜亚洲精品无码区毛片| 午夜精品一二三区| 亚洲精品在看在线观看| 日韩欧美视频| 色亚洲视频| 337p日本欧洲亚洲大胆艺术图| 观看在线人视频| 国产不卡在线| 国产毛片自拍| 精品久久久久久无码专区不卡| 中文字幕 亚洲 无码 在线 | 性xxxx欧美老肥妇牲乱| 国产视频手机在线| 欧美日本日韩|