摘要:了解記錄學(xué)習(xí)到的知識點,學(xué)習(xí)阮一峰大神書的一些心得回調(diào)地獄感受一下嚇人不。。。。。改良一波舒服多了有沒有是一種異步的解決方案,比傳統(tǒng)的回調(diào)更合理且強大。簡單來說就是一個容器,里面存在著某個未來發(fā)生的事件通常是一個異步操作的結(jié)果。
title: ES6:了解promise
subtitle: 記錄學(xué)習(xí)到的知識點,學(xué)習(xí)阮一峰大神es6書的一些心得
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)更合理且強大。
簡單來說就是一個容器,里面存在著某個未來發(fā)生的事件(通常是一個異步操作)的結(jié)果。
語法上來講是一個對象,通過他能夠得到異步操作的信息
promise可以將各種異步操作用同樣的方法進行處理,因為它提供了統(tǒng)一的api
異步操作以同步操作的流程表現(xiàn)
三種狀態(tài):Pending 進行中
Fulfilled 已成功
rejected 已失敗
兩個特點:1.promise對象的狀態(tài)不受外界影響:只有異步操作的結(jié)果才會決定該對象目前處于什么狀態(tài),除此以外的其他操作都無法改變,這也是為什么叫‘promise’,中文意思叫‘承諾’
2.一旦狀態(tài)改變就不會再變,任何時候都能得到結(jié)果:
promise對象的狀態(tài)改變只有兩種可能:Pending->Fulfilled和Pending->Rejected,
resolved-已定型:只要狀態(tài)發(fā)生改變就會凝固,一直保持這個結(jié)果,這時叫做resolved
厲害了:與事件不同,當其觸發(fā)了,錯過再監(jiān)聽就得不到結(jié)果了,但是promise內(nèi)部的異步函數(shù)執(zhí)行完了,再去添加回調(diào)還能得到結(jié)果,示例代碼:
let pObj = new Promise((resolve,reject)=>{ console.log("測試執(zhí)行后,在添加回調(diào)是否可以"); let bSuccess = true; bSuccess ? resolve("yes") : reject("no"); }) pObj.then(res => { console.log(res) })注意
promise對象一旦創(chuàng)建立即執(zhí)行,上面的代碼為例,不能中途取消。如果不設(shè)置reject,內(nèi)部炸了,也不能傳遞到外層代碼-mark-后面會有介紹這點
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ù)是一個函數(shù),這個函數(shù)中的兩個參數(shù):resolve,reject,是由js引擎提供,不需要自己設(shè)置,確實看起來有點怪,這兩個參數(shù)都接受Promise對象傳遞出來的值作為參數(shù)
resolve:改變狀態(tài)從 Pending -> Fulfilled
reject:改變狀態(tài)從 Pending -> Rejected
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/102491.html
摘要:原理就是父組件把的回調(diào)函數(shù)當做傳遞給子組件,然后子組件把這個函數(shù)和當前的綁定,最終的結(jié)果是父組件的存儲的是子組件中的。 React ref 理解:通過指定ref獲得你想操作的元素,然后進行修改 string 使用方法 var input = this.refs.myInput; var inputValue = input.value; var inputRect = input.g...
摘要:先說下我面試情況,我一共面試了家公司。篇在我面試的眾多公司里,只有同城的面問到相關(guān)問題,其他公司壓根沒問。我自己回答的是自己開發(fā)組件面臨的問題。完全不用擔心對方到時候打電話核對的問題。 2019的5月9號,離發(fā)工資還有1天的時候,我的領(lǐng)導(dǎo)親切把我叫到辦公室跟我說:阿郭,我們公司要倒閉了,錢是沒有的啦,為了不耽誤你,你趕緊出去找工作吧。聽到這話,我虎軀一震,這已經(jīng)是第2個月沒工資了。 公...
閱讀 715·2021-11-18 10:02
閱讀 3605·2021-09-02 10:21
閱讀 1752·2021-08-27 16:16
閱讀 2065·2019-08-30 15:56
閱讀 2393·2019-08-29 16:53
閱讀 1381·2019-08-29 11:18
閱讀 2960·2019-08-26 10:33
閱讀 2648·2019-08-23 18:34