亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Promise: 許諾

用來創建promise對象的構造函數: function Promise (excutor) {}
簡潔描述: 一個promise對象用來表示一個異步操作的最終狀態(完成或失敗),以及該異步操作的結果值
詳細描述: Promise 對象是一個代理對象(代理一個值),被代理的值在Promise對象創建時是未知的。
 它允許你為異步操作的成功和失敗分別綁定相應的處理回調函數
 這讓異步方法可以像同步方法那樣返回值,但并不是立即返回最終執行結果,而是一個能代表未來出現的結果的promise對象
promise對象的3種狀態值
 pending(未決定的): 初始狀態,既不是成功,也不是失敗狀態。
 resolved/fulfilled(完成的): 意味著操作成功完成。 
 rejected(拒絕的): 意味著操作失敗。
promise對象的狀態變化(2種)
 pending ==> resolved: 調用resolve()
 pending ==> rejected: 調用reject()
 注意: promise的狀態確定后就不可再轉換為其它狀態
promise對象內部隱藏的屬性
 [[PromiseStatus]]: 內部變量, 存儲promise對象當前的狀態值
 [[PromiseValue]]: 內部變量, 存儲成功后的value或失敗后的reason

2). excutor: 執行器

executor是帶有 resolve 和 reject 兩個參數的函數: (resolve, reject) => {}
由我們定義, 在new Promise()內部會立即同步調用 executor 函數(不是我們調用的)
異步操作的代碼應該在此函數中執行, 一般成功后調用resolve(), 失敗后調用reject()

3). resolve: 解決

由Promise函數內部定義, 但由我們調用的函數
當異步任務成功時, 我們應該調用resolve函數, 并傳入需要的value
resolve函數內部: 
 同步修改promise對象的狀態為resolved和保存成功value, 
 異步執行已經存儲的所有onFulfilled回調函數

4). reject: 拒絕

由Promise函數內部定義, 但由我們調用的函數
當異步任務失敗/拋出error時, 我們應該調用reject函數, 并傳入需要的reason
reject函數內部: 
 同步修改promise對象的狀態為rejected和保存失敗reason
 異步調用已經存儲的所有onRejected回調函數

5). then: 接著

promise對象的方法: then(onRsolved函數, onRejected函數), 返回值為一個新的promise對象
作用: 用來指定promise的狀態為resolved或rejected時的回調函數
注意: 
 then()方法的返回值為新的promise對象, 這樣可以進行.then()的鏈式調用
 返回的promise的結果狀態和值由回調函數的結果決定

6). onResolved: 當已解決時

由then()的第一個參數指定的回調函數: (value) => {}
當promise的狀態為resolved時自動異步調用
onResolved函數的返回值:
 新的promise對象
 其它或不返回

 

7). onRejected: 當已拒絕時

由then()的第二個參數或catch()指定的回調函數: (reason) => {}
當promise的狀態為rejected時自動異步調用
onRejected函數的返回值:
 新的promise對象
 其它或不返回

8). catch: 捕獲

promise對象的方法: catch(onRejected函數)
是then()的語法糖方法, 相當于: then(null, onRejected函數)

9). Promise.resolve()

手動創建一個已經resolve的promise的快捷方法: Promise.resolve(value/promise)
如果參數為promise: 讀取此promise結果值作為返回promise的結果值

10). Promise.reject() 用得很少

手動創建一個已經reject的promise的快捷方法: Promise.reject(reason)

 

11). Promise.all([p1, p2, p3])

用來實現批量執行多個promise的異步操作, 返回一個新的promise: Promise.all([promise1, promise2, ...])
只有當所有異步操作都resolved后, 返回的promise才會變為resolved狀態, 只要有一個變為rejected, 返回的promise直接變為rejected
面試題: 實現一次發多個請求, 只有都成功后才去做處理?

分享到:
標簽:Promise
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定