Parse Bolts:一个面向iOS和Android的底层库集合

移动开发
此前,Parse被Facebook收购。最近,它开源了一个面向iOS和Android的底层库集合,统称为Bolts。根据Parse的公告,Bolts是Parse和Facebook共同努力将两家公司各自独立开发的小型底层工具类合并的结果。

此前,Parse被Facebook收购。最近,它开源了一个面向iOS和Android的底层库集合,统称为Bolts。根据Parse的公告,Bolts是Parse和Facebook共同努力将两家公司各自独立开发的小型底层工具类合并的结果。

Tasks是GitHub上***个可用的Bolts组件,旨在按照JavaScript Promises模型处理异步操作。

Promises试图解决使用回调函数处理异步操作时通常会出现的若干问题,尤其是这样一个事实:由于回调函数内部异步操作的嵌套,试图组合多个串行或并行异步操作会很快变得难以处理。

为了这个目标,一个Promise代表一项可能已经完成或者可能尚未完成的任务的结果,而它最终可能会变成一个错误。这样,任何异步操作都可以立即在执行结果中返回一个Promise;该Promise可以随时访问,如果异步操作尚未完成,可能阻塞调用者。

不过,一个Promise通常关联两个回调函数,用于在异步任务已经完成或者失败时调用。Promises的特别之处在于回调函数本身封装在Promise之中,所以它们只在将来的某个时间点执行,或者根本不执行,这依赖于原Promise的状况。

多亏这一机制,处理异步操作的序列变得简单易懂,因为Promises可以链到一起来代表异步操作和其回调函数,如上图所示(源自:Promises,Luke Smith。)

Promises的另一项优点在于错误通过Promises链传播的方式:由于Promise知道它是否已经达成,它可以将错误状态沿着Promises链传播,直至找到一个错误处理器,因此,开发人员无需为链上的每个异步操作提供错误处理器。

Promises实现的组件可以用在JavaScriptScalaClojure和许多其它语言中。

Parse声称,与Android AsyncTaskiOS NSOperation相比,Tasks有若干优势,其中包括:

  • 连续执行数个任务不会像只使用回调函数时那样创建嵌套的“金字塔(pyramid)”代码。
  • Tasks是完全可组合的,允许开发人员执行分支、并行和复杂的错误处理。
  • 开发人员可以按照执行顺序安排基于任务的代码,而不必将逻辑分解到分散的回调函数中。

Bolts组件与Parse或者Facebook服务完全无关,不需要使用Parse或者Facebook的开发人员账户。

尽管已经发布了更多的Bolts组件,但Parse尚未发布与之相关的任何细节。

查看英文原文:Parse Announces Bolts, a Collection of Low-level Libraries for iOS and Android

责任编辑:闫佳明 来源: infoq
相关推荐

2012-12-20 11:14:44

IBMdW

2011-07-20 14:32:59

SQLite数据库LIKE查询IN集合查询

2017-11-22 13:50:08

Bolts线程方法

2019-05-07 16:15:06

iOS系统系统通知库通知消息

2018-01-02 16:08:00

AndroidiOSReact Nativ

2021-05-19 22:23:56

PythonJavaScript数据

2014-06-18 09:55:29

iOS开发者学习Android

2024-02-23 10:10:00

List接口Java

2013-09-18 10:00:15

2020-12-17 12:31:16

javascriptDAOlocalStorag

2018-11-22 14:09:45

iOS架构组件开发

2014-10-14 15:50:19

UIAndroid

2013-09-27 13:14:38

AndroidiOS 7

2021-02-02 05:41:16

底层设计顶层

2009-08-04 10:22:20

Project Zer

2015-06-02 10:24:43

iOS网络请求降低耦合

2015-06-02 09:51:40

iOS网络请求封装接口

2019-05-25 14:41:04

微软AndroidiOS

2014-10-14 10:01:10

UIAndroid

2011-12-27 09:49:50

AndroidiOSFlurry
点赞
收藏

51CTO技术栈公众号