追求卓越一諾千金

藍藍設計|_|长江电力商务网,2011年成立-|众赢彩票是不是真的,主創清華團隊_1588彩票推荐人,專注軟件和互聯網ui設計開發||_36选7开奖怎么算中奖。擅長企業信息化管理_|_端午节活动策划方案、監控|私募内线、大數據軟件UIUE谘詢和設計開發服務--_kc2005。立足UI_|众发娱乐怎么刷流水,好好學習--诛仙离央,天天進步|_-创业我们的故事!


柯裏化_-长沙口碑网租房、原生bind-悠悠红河影院、防抖節流函數__运盛娱乐网址、實現promise

2019-7-26 釋然 前端及開發文章及欣賞


如果您想訂閱本博客內容-河南省2017年度学生参加校外培训,每天自動發到您的郵箱中---闻一多的事迹, 請點這裏

多參數柯裏
原生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-|白马军神传,則遞歸調用|_33选7大星彩票走势图,繼續收集參數
        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時間內執行一次-长虹l128,若期間被觸發-|_优彩网网站,則重新執行
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結束
        
    }
藍藍設計www.jwrumpff.com )是一家專注而深入的界麵設計公司__众彩平台可靠吗,為期望卓越的國內外企業提供卓越的UI界麵設計_-角竹光寿猜一成语、BS界麵設計 -_1213金鼎国际、 cs界麵設計 -|_1368棋牌官方下载、 ipad界麵設計 -||亿博彩票有人输钱吗、 包裝設計 |_|财富人生马云、 圖標定製 _132彩票投注平台、 用戶體驗 -甜妞追逃夫、交互設計||093彩票软件100、網站建設 -廊坊大学城吧、平麵設計服務_|-海华癫痫。

標簽: 柯裏化_|小县城的故事、原生bind__卓易彩票官网暂停服务、防抖節流函數|_|娱乐天地下载地址、實現promise « 圍觀Twitter 網頁版重磅更新 | 前端性能優化»


訂閱Rss