Objective-C 的轻量级 Promise 库
Promise 对象用于延迟和非同步计算。Promise 表示尚未完成但将在未来期望的操作。 参考文献
在 JavaScript 中,Promise
以优雅的方式处理异步调用
getJSON("/posts.json").then(function(posts) {
// ...
consume(posts);
}).catch(function(error) {
console.log('something wrong!', error);
});
以下是一个基本示例
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 完全相同。在初始化块中提供了 resolve
和 reject
作为输入参数,这两个方法用于改变 Promise 的状态。传递给 then
的块将在 Promise 设置为解析时调用,而在 catch
中的块将在拒绝时调用。
有关 JavaScript 中 Promise API 的更多信息,请参阅 这里
then
catch
finally
after
retry
timeout
map
filter
reduce
race
all
resolve
reject
progress
pod 'RWPromiseKit', '0.1.0'
将目录 Class
中的所有源文件复制到您的项目中
我简化了 then
的使用。只需传递一个处理程序块来处理最后一个 Promise 解析的情况。要拒绝,可以抛出异常或返回一个新的 Promise。
一些其他的 API:map
、filter
、reduce
根据 MIT 许可证授权。 完整许可证请在此处查看