1、promises相關概念
promises 的概念是由 CommonJS 小組的成員在 Promises/A 規範中提出來的。
1,then()方法介紹
根據 Promise/A 規範,promise 是一個對象,只須要 then 這一個方法。then 方法帶有以下三個參數:
- 成功回調
- 失敗回調
- 前進回調(規範沒有要求包括前進回調的實現,可是不少都實現了)。
一個全新的 promise 對象從每一個 then 的調用中返回。
2,Promise對象狀態
Promise 對象表明一個異步操做,其不受外界影響,有三種狀態:
- Pending(進行中、未完成的)
- Resolved(已完成,又稱 Fulfilled)
- Rejected(已失敗)。
(1)promise 從未完成的狀態開始,若是成功它將會是完成態,若是失敗將會是失敗態。
(2)當一個 promise 移動到完成態,全部註冊到它的成功回調將被調用,並且會將成功的結果值傳給它。另外,任何註冊到 promise 的成功回調,將會在它已經完成之後當即被調用。
(3)一樣的,當一個 promise 移動到失敗態的時候,它調用的是失敗回調而不是成功回調。
(4)對包含前進特性的實現來講,promise 在它離開未完成狀態之前的任什麼時候刻,均可以更新它的 progress。當 progress 被更新,全部的前進回調(progress callbacks)會被傳遞以 progress 的值,並被當即調用。前進回調被以不一樣於成功和失敗回調的方式處理;若是你在一個 progress 更新已經發生之後註冊了一個前進回調,新的前進回調只會在它被註冊之後被已更新的 progress 調用。
(5)注意:只有異步操做的結果,能夠決定當前是哪種狀態,任何其餘操做都沒法改變這個狀態。
3,目前支持Promises/A規範的庫
- Q:能夠在NodeJS 以及瀏覽器上工做,與jQuery兼容,能夠經過消息傳遞遠程對象。
- RSVP.js:一個輕量級的庫,它提供了組織異步代碼的工具。
- when.js:體積小巧,使用方便。
- NodeJS的Promise
- jQuery 1.5:聽說是基於「CommonJS Promises/A」規範
- WinJS / Windows 8 / Metro
來自:https://www.cnblogs.com/sweeeper/p/8442613.html