此前,Parse已被Facebook收购。最近,它开源了一组用于iOS和Android的低级库,统称为Bolts。根据Parse的公告,Bolts是Parse和Facebook共同努力的结果,旨在结合两家公司独立开发的小型底层工具。Tasks是GitHub上第一个可用的Bolts组件,旨在处理遵循JavaScriptPromises模型的异步操作。Promises试图解决在使用回调函数处理异步操作时通常会出现的几个问题,特别是尝试组合多个串行或并行异步操作会由于回调函数中的异步操作嵌套而很快变得笨拙这一事实。为此,Promise表示可能已完成或未完成的任务的结果,并且最终可能会变成错误。这样,任何异步操作都可以在执行结果中立即返回一个Promise;可以随时访问此Promise,如果异步操作尚未完成,则可能会阻塞调用者。然而,一个Promise通常与两个回调函数相关联,这两个函数在异步任务完成或失败时被调用。Promises的特别之处在于,回调函数本身被包裹在Promises中,因此它们仅在将来的某个时刻执行,或者根本不执行,这取决于原始Promise的状态。得益于这种机制,处理异步操作的顺序变得容易理解,因为Promises可以链接在一起来表示异步操作及其回调函数,如上图所示(来源:Promises,LukeSmith。)Promises的另一项优点在于错误通过Promises链传播的方式:由于Promise知道它是否已实现,它可以沿着Promises链传播错误状态,直到找到错误处理程序,因此开发人员无需提供错误处理程序。Promises实现的组件可以在JavaScript、Scala、Clojure和许多其他语言中使用。Parse声称Tasks比AndroidAsyncTask和iOSNSOperation有几个优势,包括:连续执行多个任务不会像仅使用回调函数时那样创建嵌套的代码“金字塔”。任务是完全可组合的,允许开发人员执行分支、并行和复杂的错误处理。开发人员可以按执行顺序安排基于任务的代码,而不是将逻辑分解为离散的回调函数。Bolts组件与Parse或Facebook服务完全无关,不需要Parse或Facebook开发者帐户。尽管已经发布了更多的Bolts组件,但Parse尚未发布有关它们的任何细节。查看英文原文:ParseAnnouncesBolts,一个适用于iOS和Android的低级库集合
