首頁 >web前端 >前端問答 >es6的promise是什麼意思

es6的promise是什麼意思

WBOY
WBOY原創
2022-05-05 14:37:563632瀏覽

在es6中,promise是「承諾」的意思,承諾表示非同步操作的結果,是新增的非同步程式解決方法,在程式碼中表現為一個對象,主要用於解決回調地理問題,語法為「new Promise(function(resolve, reject){..})」。

es6的promise是什麼意思

本教學操作環境:windows10系統、ECMAScript 6.0版、Dell G3電腦。

es6的promise是什麼意思

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 設定的回呼函數。

如下圖所示:

es6的promise是什麼意思

範例如下:

建立一個新的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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:Set是ES6的嗎下一篇:Set是ES6的嗎