转载自:http://www.infoq.com/cn/news/2014/02/parse-announces-bolts

数月前,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

Parse发布Bolts,一个面向iOS和Android的底层库集合的更多相关文章

  1. Android的底层库libutils介绍

    第一部分 libutils概述 libutils是Android的底层库,这个库以C++实现,它提供的API也是C++的.Android的层次的C语言程序和库,大都基于libutils开发. libu ...

  2. 发现一个很好的android开发笔记库

    http://linux.linuxidc.com/ 密码和用户名都是www.linuxidc.com android基础教程到高手进阶,游戏开发,数据存储,android架构等.谢谢网站主分享!

  3. Android常用开源库集合【持续更新】

    1.FastJson  阿里巴巴工程师做的一个方便的JSON转换库 2.ButterKnife 只要作用能代替代码中大量的findviewbyid语句的使用,使用@injectview注入方式 3.v ...

  4. 造轮子 | 怎样设计一个面向协议的 iOS 网络请求库

    近期开源了一个面向协议设计的网络请求库 MBNetwork,基于 Alamofire 和 ObjectMapper 实现,目的是简化业务层的网络请求操作. 须要干些啥 对于大部分 App 而言,业务层 ...

  5. 我的Android进阶之旅------>【强力推荐】Android开源图表库XCL-Charts版本发布及展示页

    因为要做图表相关的应用,后来百度发现了一个很好的Android开源图表库(XCL-Charts is a free charting library for Android platform.) 下面 ...

  6. 二维码合成,将苹果和安卓(ios和android)合成一个二维码,让用户扫描一个二维码就可以分别下载苹果和安卓的应用

    因为公司推广的原因,没有合适的将苹果和安卓(ios和android)合成一个二维码的工具. 因为这个不难,主要是根据浏览器的UA进行判断,所以就自己开发了一个网站 网站名称叫:好推二维码  https ...

  7. 用一个二维码做下载地址,自动区分是 ios 还是 android

    用一个二维码做下载地址,自动区分是 ios 还是 android, 甚至区分 iphone  和 ipad. <html> <head> <meta http-equiv ...

  8. Livecoding.tv 现正举行iOS及Android App设计比赛

    近日,Livecoding.tv, 一个为世界各地的程序员提供在线实时交流的平台,在其网站上发布了一篇通知, 宣布从4月15日至5月15日,会为iOS和Android的开发者举办一场本地移动app设计 ...

  9. iOS 和 Android 测试托管平台 FIR.im 的注册与常用功能

    FIR.im  作为专业的 iOS 和 Android 测试包发布网站, 注册超简单,支持输入网址直接下载和二维码扫描下载.功能类似 TestFlight ,但又比它强大,支持游客访问密码,iOS 和 ...

随机推荐

  1. iOS 作为蓝牙外设广播信息

    苹果蓝牙后台的限制,原本广播会有两个段分别是localName和serviceUUID这两块,但现在后台广播时,是不发送在这两段的 手机app可以作为一个蓝牙外设端来模拟外设硬件,但广播包里的数据只能 ...

  2. 使用tmux管理终端的窗口

    教程参考这里: http://louiszhai.github.io/2017/09/30/tmux/

  3. 微信小程序跑马灯效果--基于CSS3 animation 及 基于JS

    如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人.谢谢大家!❤ 如果解决不了,可以在文末进群交流. 基于CSS3主要代码实现 效果图: 视图模板wxml中: <view class=&qu ...

  4. MySQL Transaction--网络丢包导致长时间未提交事务

    TCP三次握手(Three-Way Handshake) 建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立. TCP三次握手:第一次握手:Client将标志位SYN置为1,随机产 ...

  5. keil5工程移植到IAR工程

    keil5工程移植到IAR工程 一. 软件版本 MDK-ARM Professional  Version: 5.14.0.0 IAR 8.1 移植工程:基于正点原子开发板建立的STM32F407ZG ...

  6. Shodan information gathering use parameter

    1.we sue the Search Engines Shodan we can gather much information on the line web , such we want to ...

  7. Scrum会议博客以及测试报告

    3组Alpha冲刺阶段博客目录 一.Scrum Meeting1. 第六周会议记录(链接地址:https://www.cnblogs.com/Cherrison-Time/articles/11788 ...

  8. Surface 系统恢复

    Surface Pro 6超详细教程之下载Surface 系统恢复镜像并制作系统恢复U盘 https://www.jianshu.com/p/d1b41d913f91 怎样创建Windows 10系统 ...

  9. 剑指Offer(三十四):第一个只出现一次的字符

    剑指Offer(三十四):第一个只出现一次的字符 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net ...

  10. 利用Python3的requests和re库爬取猫眼电影笔记

    以下笔记,作为参考借鉴,如有疑问可以联系我进行交流探讨! 代码思路很简单,简单概括为:   首先利用requests的get方法获取页面的html文件,之后对得到的html文件进行相对应的正则处理,然 ...