2016年3月2日 星期三

dojo/promise/Promise

dojo/promise/Promise

簡介

Promise(議決、承諾)是一種程式撰寫的模式 (Template),其主要功能在協調非同步執行緒 (Asynchronous Thread) 作業之間的前後順序。為了協調各執行緒執行時的先後次序,首先要在先執行的執行緒中產生並傳回一個 Promise 物件,再利用這個 Promise 物件來控制後續要執行的作業。先執行的執行緒則在完成作業時,傳回「解決」(resolved) 的訊號;或因執行條件不足或執行條件錯誤時,傳回「拒絕」(rejected) 的訊號。而 Promise 的狀態則在「未完成」 (unfulfilled)的起始狀態,依據先執行的作業結果轉換至「完成」(fulfilled)或「拒絕」(rejected) 兩個狀態之中的一個;Promise 則依不同的狀態再去執行對應的作業。

在 dojo 中,dojo/promise/Promise 是一個只定義了應用呼叫介面 (API)抽象物件,並未進行物件模組的實作;實作 dojo/promise/Promise 介面的物件模組是 dojo/Deferred。透過 dojo/Deferred 則另外實作了 dojo/promise/all, dojo/promise/first 及 dojo/when 三個物件模組。

範例

Script


then():傳入三個函式作為參數,

  1. callBack() 是在狀態為「完成」(resolved)時所要執行的作業。
  2. errBack() 則是在狀態為「拒絕」(rejected) 時所要執行的作業。
  3. progBack() 則是在作業進行時,進度改變時所要執行的作業。

cancel():為收到「取消」信號時,所要執行的作業。
isResolved(), isRejected(), isFulfilled() 及 isCanceled() 則傳回 true 或 false,表示該 Promise 在呼叫這些函式時,當時所處於的狀態。

沒有留言:

張貼留言