RWPromiseKit 0.2.0

RWPromiseKit 0.2.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2016年8月

deput 维护。



  • deput

描述

Objective-C 的轻量级 Promise 库

关于 Promise

Promise 对象用于延迟和非同步计算。Promise 表示尚未完成但将在未来期望的操作。 参考文献

在 JavaScript 中,Promise 以优雅的方式处理异步调用

getJSON("/posts.json").then(function(posts) {
  // ...
  consume(posts);
}).catch(function(error) {
  console.log('something wrong!', error);
});

RWPromiseKit 的使用方法

以下是一个基本示例

RWPromise* p1 = [RWPromise promise:^(ResolveHandler resolve, RejectHandler reject) {
                  resolve(@"result");
                }];
p1.then(^id(NSString* value){
  NSLog(@"%@",value); //result
  return @"resultOfThen";
}).then(^id(NSString* value){
  NSLog(@"%@",value); //resultOfThen
  NSException *e = [NSException exceptionWithName:@"name"
                                           reason:@"reason"
                                         userInfo:@{}];
  @throw e;
  return nil;
}).catch(^(NSError* error){
  NSLog(@"%@",[error description]); //error contains exception
});

使用 RWPromise 与使用 JavaScript 中的 Promise 完全相同。在初始化块中提供了 resolvereject 作为输入参数,这两个方法用于改变 Promise 的状态。传递给 then 的块将在 Promise 设置为解析时调用,而在 catch 中的块将在拒绝时调用。

有关 JavaScript 中 Promise API 的更多信息,请参阅 这里

支持的 API

0.1.0

  • then
  • catch
  • finally
  • after
  • retry
  • timeout
  • map
  • filter
  • reduce
  • race
  • all
  • resolve
  • reject

0.2.0

  • progress

安装

  • Cocoapods
pod 'RWPromiseKit', '0.1.0'
  • 源代码

将目录 Class 中的所有源文件复制到您的项目中

问题和待办事项列表

  • 我简化了 then 的使用。只需传递一个处理程序块来处理最后一个 Promise 解析的情况。要拒绝,可以抛出异常或返回一个新的 Promise。

  • 一些其他的 API:mapfilterreduce

  • 与第三方库集成
  • 单元测试尚未完成
  • 复杂的测试案例。
  • 更详细的文档

许可证

根据 MIT 许可证授权。 完整许可证请在此处查看