Promise:英文承諾意思,Promise對象中保存某個未來才回結束的事件(通常是一個異步操作)的結果。
Promise有三個狀態:(推薦學習:Javascript視頻教程)
pendding,rejected,resolved
Promise對象狀態的切換只有兩種可能:
pendding->rejected,pendding->resolved
基礎用法:
new Promise((resolved,rejected)=>{})
Promise對象resolved,rejected函數,在異步事件狀態pendding->resolved回調成功時,會調用resolved函數;當異步操作失敗時,回調用rejected函數。
Promise的then(resolved,rejected)函數參數有兩個,一個resolved函數,一個rejected函數。
Promise的catch():捕捉promise錯誤函數,和then函數參數中rejected作用一樣,處理錯誤,由于Promise拋出錯誤具有冒泡性質,能夠不斷傳遞,會傳到catch中,所以建議所有錯誤處理放在catch中,then中只處理成功的。
Promise一個大特色就是可以鏈式調用,在then,catch中可以返回Promise對象。
Promise.all([promise1,promise2]):參數是promise對象數組,等到所有promise對象狀態resolved,該對象的狀態會resolved,會立即調用then,當有一個promise對象為rejected,該對象的狀態就會邊城rejectd,執行catch。
Promise.race([promise1,promise2]):競速函數,當有一個promise對象狀態變化了,該對象就會采用和相同的狀態,并執行相應函數。
promise的生命周期
每個 Promise都會經歷一個短暫的生命周期,初始為掛起態( pending state),這表示異步操作尚未結束。一個掛起的 Promise 也被認為是未決的( unsettled )。一旦異步操作結束, Promise就會被認為是已決的( settled ),并進入兩種可能狀態之一:
1. 已完成(fulfilled ): Promise 的異步操作已成功結束;
2. 已拒絕(rejected ): Promise 的異步操作未成功結束,可能是一個錯誤,或由其他原因導致。
一旦狀態改變,就「凝固」了,會一直保持這個狀態,不會再發生變化。當狀態發生變化,promise.then綁定的函數就會被調用。注意:Promise一旦新建就會「立即執行」,無法取消。這也是它的缺點之一。
更多Javascript相關技術文章,請訪問js教程欄目進行學習!
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com