国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

原生JS實(shí)現(xiàn)簡(jiǎn)單的Promise

Steven / 631人閱讀

摘要:下邊就手寫一個(gè)簡(jiǎn)單版本的。首先要了解的基本用法,是一個(gè)原生支持的構(gòu)造函數(shù),需要傳入一個(gè)自定義函數(shù),接受兩個(gè)參數(shù)和,接受成功數(shù)據(jù)回調(diào),用于處理異常。基本用法為以下為的原生簡(jiǎn)單實(shí)現(xiàn),滿足了的簡(jiǎn)單調(diào)用使用方法同的使用方法一樣

javascript es6標(biāo)準(zhǔn)中的 Promise對(duì)象在js編程中使用量很大,使用Promise可以讓異步邏輯在開發(fā)中清晰很多,了解其原理則有益在開發(fā)過程中更清晰的使用Promise對(duì)象,或者能在沒有Promise原生支持的es5標(biāo)準(zhǔn)下簡(jiǎn)單的造一個(gè)Promise對(duì)象出來。下邊就手寫一個(gè)簡(jiǎn)單版本的Promise。
首先要了解Promise的基本用法,Promise是一個(gè)原生支持的構(gòu)造函數(shù),需要傳入一個(gè)自定義函數(shù),接受兩個(gè)參數(shù) resolve和reject,resolve接受成功數(shù)據(jù)回調(diào),reject用于處理異常。基本用法為:

var exp1 = new Promise(function(resolve,reject){
    try{
        setTimeout(function(){
            xxx
            resolve(xx)
        },3000)
    }catch(e){
        reject(e)
    }
})

exp1.then(function(data){
    xxx
})

以下為es5的原生簡(jiǎn)單實(shí)現(xiàn),滿足了then的簡(jiǎn)單調(diào)用

function PromiseX(fun){
    var _this = this;
    this.status = "pendding";
    this.data = null;
    this.error = null;
    var resolve = function(data){
        _this.changeStatus("success");
        _this.thenCb&&_this.thenCb(data);
        _this.data = data;
    }
    var reject = function(e){
        _this.changeStatus("error");
        _this.thenErrCb&&_this.thenErrCb(e);
        _this.error = e;
    }
    fun&&fun(resolve,reject)
}
PromiseX.prototype.then = function(cb,errCb){
    if(this.data){
        cb&&cb(this.data);
    }
    if(this.error){
        errCb&&errCb(this.error);
    }
    this.thenCb = cb;
    this.thenErrCb = errCb;
    return this;
}
PromiseX.prototype.changeStatus = function(status){
    this.status = status;
}

使用方法同es6的使用方法一樣

var testPromiseX = new PromiseX(function(resolve){
    setTimeout(function(){
        resolve(1)
    },3000)
})
testPromiseX.then(function(res){
    alert(res)
})

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/103844.html

相關(guān)文章

  • [譯] 深入理解 Promise 五部曲:4. 擴(kuò)展問題

    摘要:有一個(gè)和相關(guān)的更大的問題。最后,請(qǐng)負(fù)有責(zé)任感并且使用安全的擴(kuò)展。深入理解五部曲異步問題深入理解五部曲轉(zhuǎn)換問題深入理解五部曲可靠性問題深入理解五部曲擴(kuò)展性問題深入理解五部曲樂高問題最后,安利下我的個(gè)人博客,歡迎訪問 原文地址:http://blog.getify.com/promis... 現(xiàn)在,我希望你已經(jīng)看過深入理解Promise的前三篇文章了。并且假設(shè)你已經(jīng)完全理解Promises...

    Shimmer 評(píng)論0 收藏0
  • 原生js寫一個(gè)"多動(dòng)癥"簡(jiǎn)歷

    摘要:用原生寫一個(gè)多動(dòng)癥的簡(jiǎn)歷預(yù)覽地址源碼地址最近在知乎上看到方應(yīng)杭用寫了一個(gè)會(huì)動(dòng)的簡(jiǎn)歷,覺得挺好玩的,研究一下其實(shí)現(xiàn)思路,決定試試用原生來實(shí)現(xiàn)。 用原生js寫一個(gè)多動(dòng)癥的簡(jiǎn)歷 預(yù)覽地址源碼地址 最近在知乎上看到@方應(yīng)杭用vue寫了一個(gè)會(huì)動(dòng)的簡(jiǎn)歷,覺得挺好玩的,研究一下其實(shí)現(xiàn)思路,決定試試用原生js來實(shí)現(xiàn)。 showImg(https://segmentfault.com/img/remot...

    Y3G 評(píng)論0 收藏0
  • 傳統(tǒng) Ajax 已死,F(xiàn)etch 永生

    摘要:結(jié)果證明,對(duì)于以上瀏覽器,在生產(chǎn)環(huán)境使用是可行的。后面可以跟對(duì)象,表示等待才會(huì)繼續(xù)向下執(zhí)行,如果被或拋出異常則會(huì)被外面的捕獲。,,都是現(xiàn)在和未來解決異步的標(biāo)準(zhǔn)做法,可以完美搭配使用。這也是使用標(biāo)準(zhǔn)一大好處。只允許外部傳入成功或失敗后的回調(diào)。 showImg(https://cloud.githubusercontent.com/assets/948896/10188666/bc9a53...

    fai1017 評(píng)論0 收藏0
  • es6 promise面試

    摘要:執(zhí)行函數(shù)會(huì)返回一個(gè)遍歷器對(duì)象,每一次函數(shù)里面的都相當(dāng)一次遍歷器對(duì)象的方法,并且可以通過方法傳入自定義的來改變函數(shù)的行為。函數(shù)可以通過配合函數(shù)更輕松更優(yōu)雅的實(shí)現(xiàn)異步編程和控制流管理。它和構(gòu)造函數(shù)的不同點(diǎn)類的內(nèi)部定義的所有方法,都是不可枚舉的。 let const的命令 在ES6之前,聲明變量只能用var,var方式聲明變量其實(shí)是很不合理的,準(zhǔn)確的說,是因?yàn)镋S5里面沒有塊級(jí)作用域是很不合...

    timger 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<