Parse發布Bolts,一個面向iOS和Android的底層庫集合
數月前,Parse被非死book收購。最近,它開源了一個面向iOS和Android的底層庫集合,統稱為Bolts。根據Parse的公告,Bolts是Parse和非死book共同努力將兩家公司各自獨立開發的小型底層工具類合并的結果。
Tasks是GitHub上第一個可用的Bolts組件,旨在按照JavaScript Promises模型處理異步操作。
Promises試圖解決使用回調函數處理異步操作時通常會出現的若干問題,尤其是這樣一個事實:由于回調函數內部異步操作的嵌套,試圖組合多個串行或并行異步操作會很快變得難以處理。
為了這個目標,一個Promise代表一項可能已經完成或者可能尚未完成的任務的結果,而它最終可能會變成一個錯誤。這樣,任何異步操作都可以立即在執行結果中返回一個Promise;該Promise可以隨時訪問,如果異步操作尚未完成,可能阻塞調用者。
不過,一個Promise通常關聯兩個回調函數,用于在異步任務已經完成或者失敗時調用。Promises的特別之處在于回調函數本身封裝在Promise之中,所以它們只在將來的某個時間點執行,或者根本不執行,這依賴于原Promise的狀況。
多虧這一機制,處理異步操作的序列變得簡單易懂,因為Promises可以鏈到一起來代表異步操作和其回調函數,如上圖所示(源自:Promises,Luke Smith。)
Promises的另一項優點在于錯誤通過Promises鏈傳播的方式:由于Promise知道它是否已經達成,它可以將錯誤狀態沿著Promises鏈傳播,直至找到一個錯誤處理器,因此,開發人員無需為鏈上的每個異步操作提供錯誤處理器。
Promises實現的組件可以用在JavaScript、Scala、Clojure和許多其它語言中。
Parse聲稱,與Android AsyncTask和iOS NSOperation相比,Tasks有若干優勢,其中包括:
- 連續執行數個任務不會像只使用回調函數時那樣創建嵌套的“金字塔(pyramid)”代碼。
- Tasks是完全可組合的,允許開發人員執行分支、并行和復雜的錯誤處理。
- 開發人員可以按照執行順序安排基于任務的代碼,而不必將邏輯分解到分散的回調函數中。
Bolts組件與Parse或者非死book服務完全無關,不需要使用Parse或者非死book的開發人員賬戶。
盡管已經發布了更多的Bolts組件,但Parse尚未發布與之相關的任何細節。
查看英文原文:Parse Announces Bolts, a Collection of Low-level Libraries for iOS and Android
來自:http://www.infoq.com/cn/news/2014/02/parse-announces-bolts