在es6中,promise是「承諾」的意思,承諾表示非同步操作的結果,是新增的非同步程式解決方法,在程式碼中表現為一個對象,主要用於解決回調地理問題,語法為「new Promise(function(resolve, reject){..})」。
本教學操作環境:windows10系統、ECMAScript 6.0版、Dell G3電腦。
promise 是承諾的意思,背後的核心思想是,承諾表示非同步操作的結果。
是es6新增的非同步程式設計解決方案,在程式碼中表現為一個物件。
promise是js非同步程式設計提供的解決方案,主要用來解決回呼地域問題。
Promise有三種狀態,分別是
Pending(進行中) 初始狀態
Fulfilled (已成功) 意味著操作成功
rejected (已失敗) 意味著操作失敗
注意:Promise物件的三種狀態,不受外界的影響,只有promise中存放的將來會結束的事件才會影響。也就是只有非同步操作的結果,可以決定目前是哪一種狀態,任何其他操作都無法改變這個狀態
Promise狀態一旦改變、不可逆
Pendding(進行中)狀態可以轉變為Fulfilled(已成功)狀態
Pendding(進行中)狀態可以轉換為rejected(已失敗)狀態
promise只有這兩種情況發生狀態改變,一旦發生這兩種狀態改變,那麼狀態就凝固了,就會一直維持這個結果。
基本上使用方法
語法:
new Promise( function(resolve, reject) {...} /* executor */ )
原理:
建構Promise 物件時,需要傳入一個executor 函數,主要業務流程都在executor 函數中執行。
Promise建構子執行時立即呼叫executor 函數, resolve 和reject
兩個函數作為參數傳遞給executor,resolve 和reject
#函數被呼叫時,分別將promise的狀態改為fulfilled(完成)或rejected(失敗)。一旦狀態改變,就不會再變,任何時候都可以得到這個結果。
在 executor 函數中呼叫 resolve 函數後,會觸發 promise.then 設定的回呼函數;而呼叫 reject
函數後,會觸發 promise.catch 設定的回呼函數。
如下圖所示:
範例如下:
建立一個新的Promise物件
#需要傳入一個回呼函數,回呼函數有2個參數,分別代表resolve(解決),reject(拒絕),並且兩個參數都是函數
如果兩個參數都不調用,預設pending狀態
let promise=new Promise(function(resolve,reject){ });//pending状态
呼叫resolve 函數,代表Promise的狀態,會從pending==>fulfilled
let promise=new Promise(function(resolve,reject){ resolve(); });//fulfilled状态
呼叫reject函數,代表Promise的狀態,會從pending==>rejected
let promise=new Promise(function(resolve,reject){ reject(); });//rejected 状态
【相關推薦:javascript影片教學、web前端】
以上是es6的promise是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!