您好,登錄后才能下訂單哦!
這篇文章主要講解了“es6中promise是什么及有哪些作用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“es6中promise是什么及有哪些作用”吧!
在es6中,promise用于創建一個新的Promise對象,生成Promise實例;promise是一個構造函數,是異步編程的解決方案;簡單說就是一個容器,里面保存著某個未來才會結束的事件的結果。
本教程操作環境:windows10系統、ECMAScript 6.0版、Dell G3電腦。
Promise是ES6中提供的一個異步編程的解決方案,Promise本身是一個構造函數
typeof Promise // function
一般情況下 我們在開發中會使用 new Promise() 調用構造函數,創建一個新的Promise對象, Promise對象有兩個特點
1、對象的狀態不受外界影響。
Promise對象是一個異步操作,有三種狀態:pending(進行中)、fulfilled(已成功)和rejected(已失敗)。
只有異步操作的結果,可以決定Promise是哪一種狀態,任何其他操作都無法改變這個狀態
2、一旦Promise狀態改變,就不會再有變化,任何時候都可以得到這個結果。
Promise對象的狀態改變,只有兩種可能:從pending變為fulfilled 或者 從pending變為rejected。只要這兩種情況發生,狀態就不會再變了,會一直保持這個結果,這時就稱為 resolved(已定型)。如果改變已經發生了,你再對Promise對象添加回調函數,也會立即得到這個結果。這與事件(Event)不同,事件的特點是,如果你錯過了它,再去監聽,是得不到結果的
使用Promise的好處,就是在處理異步程序時,將異步操作隊列化,按照期望的順序執行,返回符合預期的結果,這樣即使是多重異步操作,也可以方便的使用Promise進行鏈式調用
3、Promise也有一些缺點。
首先,無法取消Promise,一旦新建它就會立即執行,無法中途取消。其次,如果不設置回調函數,Promise內部拋出的錯誤,不會反應到外部。第三,當處于pending狀態時,無法得知目前進展到哪一個階段(剛剛開始還是即將完成)
所謂Promise,簡單說就是一個容器,里面保存著某個未來才會結束的事件(通常是一個異步操作)的結果。
ES6 規定,Promise對象是一個構造函數,用來生成Promise實例。
下面代碼創造了一個Promise實例。
const promise = new Promise(function(resolve, reject) { // ... some code if (/* 異步操作成功 */){ resolve(value); } else { reject(error); } });
Promise構造函數接受一個函數作為參數,該函數的兩個參數分別是resolve和reject。它們是兩個函數,由 JavaScript 引擎提供,不用自己部署。
resolve函數的作用是,將Promise對象的狀態從“未完成”變為“成功”(即從 pending 變為 resolved),在異步操作成功時調用,并將異步操作的結果,作為參數傳遞出去;reject函數的作用是,將Promise對象的狀態從“未完成”變為“失敗”(即從 pending 變為 rejected),在異步操作失敗時調用,并將異步操作報出的錯誤,作為參數傳遞出去。
Promise實例生成以后,可以用then方法分別指定resolved狀態和rejected狀態的回調函數。
promise.then(function(value) { // success }, function(error) { // failure });
then方法可以接受兩個回調函數作為參數。第一個回調函數是Promise對象的狀態變為resolved時調用,第二個回調函數是Promise對象的狀態變為rejected時調用。其中,第二個函數是可選的,不一定要提供。這兩個函數都接受Promise對象傳出的值作為參數。
感謝各位的閱讀,以上就是“es6中promise是什么及有哪些作用”的內容了,經過本文的學習后,相信大家對es6中promise是什么及有哪些作用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。