亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

ES6:promise是啥?強(qiáng)力一波!

adam1q84 / 3266人閱讀

摘要:了解記錄學(xué)習(xí)到的知識(shí)點(diǎn),學(xué)習(xí)阮一峰大神書的一些心得回調(diào)地獄感受一下嚇人不。。。。。改良一波舒服多了有沒有是一種異步的解決方案,比傳統(tǒng)的回調(diào)更合理且強(qiáng)大。簡單來說就是一個(gè)容器,里面存在著某個(gè)未來發(fā)生的事件通常是一個(gè)異步操作的結(jié)果。

title: ES6:了解promise
subtitle: 記錄學(xué)習(xí)到的知識(shí)點(diǎn),學(xué)習(xí)阮一峰大神es6書的一些心得

回調(diào)地獄感受一下:
let target = {
    data:"callBack hell!!!",
    timeout:1000
}
let asyncFunc = function(cb,data = this.data){
    setTimeout( (dataTemp) => {
        console.log(dataTemp);
        cb();
    }, this.timeout,data);
}.bind(target);
asyncFunc(()=>{
    asyncFunc(()=>{
        asyncFunc(()=>{
            asyncFunc(()=>{
                asyncFunc(()=>{
                    asyncFunc(()=>{
                        console.log("嚇人不。。。。。");
                    })
                })
            })
        })
    })
})

回調(diào)套多了,簡直沒法看。。。

promise改良一波
let target = {
    data: "promise ~~",
    timeout: 1000
}
let asyncFunc = function (data = this.data) {
    var pObj = new Promise((resolve,reject) => {
        setTimeout( (dataTemp) => {
            console.log(data);
            resolve(data)
        }, this.timeout,data);
    })
    return pObj;
}.bind(target)
asyncFunc()
.then(()=>asyncFunc())
.then(()=>asyncFunc())
.then(()=>asyncFunc())
.then(()=>asyncFunc())
.then(()=>asyncFunc())
.then(()=>asyncFunc("舒服多了有沒有"))
promise

是一種異步的解決方案,比傳統(tǒng)的回調(diào)更合理且強(qiáng)大。

簡單來說就是一個(gè)容器,里面存在著某個(gè)未來發(fā)生的事件(通常是一個(gè)異步操作)的結(jié)果。

語法上來講是一個(gè)對(duì)象,通過他能夠得到異步操作的信息

promise可以將各種異步操作用同樣的方法進(jìn)行處理,因?yàn)樗峁┝私y(tǒng)一的api

異步操作以同步操作的流程表現(xiàn)

三種狀態(tài):

Pending 進(jìn)行中

Fulfilled 已成功

rejected 已失敗

兩個(gè)特點(diǎn):

1.promise對(duì)象的狀態(tài)不受外界影響:只有異步操作的結(jié)果才會(huì)決定該對(duì)象目前處于什么狀態(tài),除此以外的其他操作都無法改變,這也是為什么叫‘promise’,中文意思叫‘承諾’

2.一旦狀態(tài)改變就不會(huì)再變,任何時(shí)候都能得到結(jié)果:

promise對(duì)象的狀態(tài)改變只有兩種可能:Pending->Fulfilled和Pending->Rejected,

resolved-已定型:只要狀態(tài)發(fā)生改變就會(huì)凝固,一直保持這個(gè)結(jié)果,這時(shí)叫做resolved

厲害了:與事件不同,當(dāng)其觸發(fā)了,錯(cuò)過再監(jiān)聽就得不到結(jié)果了,但是promise內(nèi)部的異步函數(shù)執(zhí)行完了,再去添加回調(diào)還能得到結(jié)果,示例代碼:

let pObj = new Promise((resolve,reject)=>{
    console.log("測(cè)試執(zhí)行后,在添加回調(diào)是否可以");
    let bSuccess = true;
    bSuccess ? resolve("yes") : reject("no");
})
pObj.then(res => { console.log(res) })

注意

promise對(duì)象一旦創(chuàng)建立即執(zhí)行,上面的代碼為例,不能中途取消。如果不設(shè)置reject,內(nèi)部炸了,也不能傳遞到外層代碼-mark-后面會(huì)有介紹這點(diǎn)

resolve,reject,.then(),.catch()

`new Promise((resolve,reject)=>{
let bSuccessed = true;
if(bSuccessed){

resolve("Fulfilled");resolve("Fulfilled");

}else{

//失敗
reject("Rejected");

}
}).then(res).catch(res)`

Promise的構(gòu)造函數(shù)接受的參數(shù)是一個(gè)函數(shù),這個(gè)函數(shù)中的兩個(gè)參數(shù):resolve,reject,是由js引擎提供,不需要自己設(shè)置,確實(shí)看起來有點(diǎn)怪,這兩個(gè)參數(shù)都接受Promise對(duì)象傳遞出來的值作為參數(shù)

resolve:改變狀態(tài)從 Pending -> Fulfilled

reject:改變狀態(tài)從 Pending -> Rejected

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/102491.html

相關(guān)文章

  • React的ref是啥?強(qiáng)力一波

    摘要:原理就是父組件把的回調(diào)函數(shù)當(dāng)做傳遞給子組件,然后子組件把這個(gè)函數(shù)和當(dāng)前的綁定,最終的結(jié)果是父組件的存儲(chǔ)的是子組件中的。 React ref 理解:通過指定ref獲得你想操作的元素,然后進(jìn)行修改 string 使用方法 var input = this.refs.myInput; var inputValue = input.value; var inputRect = input.g...

    MorePainMoreGain 評(píng)論0 收藏0
  • 2019-我的前端面試題

    摘要:先說下我面試情況,我一共面試了家公司。篇在我面試的眾多公司里,只有同城的面問到相關(guān)問題,其他公司壓根沒問。我自己回答的是自己開發(fā)組件面臨的問題。完全不用擔(dān)心對(duì)方到時(shí)候打電話核對(duì)的問題。 2019的5月9號(hào),離發(fā)工資還有1天的時(shí)候,我的領(lǐng)導(dǎo)親切把我叫到辦公室跟我說:阿郭,我們公司要倒閉了,錢是沒有的啦,為了不耽誤你,你趕緊出去找工作吧。聽到這話,我虎軀一震,這已經(jīng)是第2個(gè)月沒工資了。 公...

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

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

0條評(píng)論

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