首頁 > web前端 > js教程 > 主體

promise是什麼意思

(*-*)浩
發布: 2019-06-18 11:08:07
原創
22181 人瀏覽過

js是單執行緒的,Promise解決就是非同步程式設計一種思想,比傳統的回呼函數和事件強大得多。 Promise相當於非同步操作結果的佔位符,他不會去訂閱一個事件,也不會傳遞一個回呼函數給目標函數,而是讓函數傳回一個Promise(相當於訂單號碼)。

promise是什麼意思

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教學欄位進行學習!

以上是promise是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板