午夜勾魂曲-午夜福利自怕-午夜福利在线观看6080-午夜福利院电影-国产精品毛片AV久久97-国产精品麻豆高潮刺激A片

柯里化、原生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.gerard.com.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、網站建設 平面設計服務

日歷

鏈接

個人資料

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

存檔

主站蜘蛛池模板: 午夜免费体验30分 | 有人有片的观看免费视频 | 热热久久超碰精品中文字幕 | 亚洲 欧美 日韩 国产 视频 | YY600800新视觉理论私人 | 欧美色图14p | 一二三四电影完整版免费观看 | 日日摸天天添天天添无码蜜臀 | 色综合久久天天影视网 | 久久视热频国产这里只有精品23 | 爱如潮水3免费观看日本 | 夜夜骑夜夜欢 | 我年轻漂亮的继坶2中字在线播放 | 欧美午夜a级精美理论片 | 亚洲欧美成人综合 | 秋霞伦理电影在线看 | 法国剧丝袜情版h级在线电影 | 亚洲精品乱码一区二区三区 | 印度学生xxxxx性14一16 | 欧美成ee人免费视频 | 伊人成综合网伊人222 | 亚洲日韩欧美国产专区 | 久久在精品线影院精品国产 | 乱色欧美激惰 | 国产成人精视频在线观看免费 | 首页_亚洲AV色老汉影院 | 中文字幕在线视频网站 | 国产传媒18精品免费观看 | 人人超碰97caoporen国产 | 秘密影院久久综合亚洲综合 | 亚洲精品成人在线 | 国产AV天堂亚洲AV麻豆 | 草莓视频在线看免费高清观看 | 免费人成视频X8X8国产更快乐 | 欧美AAAAAA级午夜福利视频 | 全免费a级毛片免费看 | 又硬又粗又大一区二区三区视频 | 国产36d在线观看 | 美女扒开腿让男生桶免费看动态图 | 欧美videosgratis杂交 | 2021国产精品久久久久精品免费网 |