什么情況下會用到Promise锥累?
? 一般情況下是有異步操作時扒吁,使用Promise對這個異步操作進行封裝
Promise的方法解析
?new?->?構(gòu)造函數(shù)(1.保存了一些狀態(tài)信息?2.執(zhí)行傳入的函數(shù))
?在執(zhí)行傳入的回調(diào)函數(shù)時,會傳入兩個參數(shù)(resolve:處理下一步信息植阴,reject:處理錯誤信息俏拱,這兩個參數(shù)本身又是函數(shù))
new Promise很明顯是創(chuàng)建一個Promise對象 p小括號中((resolve, reject) => {})也很明顯就是一個函數(shù),而且我們這里用的是之前剛剛學習過的箭頭函數(shù)处坪。
但是resolve, reject它們是什么呢? ü我們先知道一個事實:在創(chuàng)建Promise時架专,傳入的這個箭頭函數(shù)是固定的(一般我們都會這樣寫)
resolve和reject它們兩個也是函數(shù)同窘,通常情況下,我們會根據(jù)請求數(shù)據(jù)的成功和失敗來決定調(diào)用哪一個部脚。 p成功還是失斚氚睢?
如果是成功的委刘,那么通常我們會調(diào)用resolve(messsage)丧没,這個時候,我們后續(xù)的then會被回調(diào)锡移。 ü如果是失敗的呕童,那么通常我們會調(diào)用reject(error),這個時候淆珊,我們后續(xù)的catch會被回調(diào)夺饲。?
Promise到底是做什么的呢?
Promise三種狀態(tài)
ppending:等待狀態(tài)套蒂,比如正在進行網(wǎng)絡(luò)請求钞支,或者定時器沒有到時間茫蛹。
pfulfill:滿足狀態(tài)操刀,當我們主動回調(diào)了resolve時,就處于該狀態(tài)婴洼,并且會回調(diào).then()
preject:拒絕狀態(tài)骨坑,當我們主動回調(diào)了reject時,就處于該狀態(tài)柬采,并且會回調(diào).catch()