VSPromise
简单的轻量级 Objective-C promises。
特点
- 自动内存管理。您可以将 promise 存储在弱变量中,也可以完全不存储,一旦解析将自动释放
- 任何长度的链
- 结果转换
- 线程安全
安装
VSPromise 支持两种方法将之安装到项目中。
使用 CocoaPods 安装
要将 VSPromise 集成到您的 Xcode 项目中,请使用 CocoaPods 在您的 Podfile 中指定它
target 'TargetName' do
pod 'VSPromise'
end
然后,运行以下命令
$ pod install
使用“拖放”安装
只需将“源”文件夹中的文件复制到您的项目中,并将它们添加到您的目标中即可。
使用说明
基本使用方法
VSPromise *promise = ...;
promise.then(^id(id result) {
// `result` is a result of previous promise
...
return somePromise;
})
.then(^id(id result) {
// You can instert any number of `then` blocks and return promise or nil
return somePromise;
})
.fail(^id(NSError *error) {
// This block will be called, if you get and error in any previous `then` block
return nil;
})
.finaly(^{
// This block will be called after all then or fail blocks.
});
如何在异步方法中使用Promise
- (VSPromise *)someAsyncMethod:(id)params
{
VSPromise *promise = [VSPromise promise];
[self someAsyncMethodWithCompletion:^(id result, NSError *error) {
if (!error) {
[promise resolve:result];
}
else {
[promise reject:error];
}
});
return promise;
}
结果转换
VSPromise *promise = ...;
[promise map:^NSURL *(NSDictionary *json) {
NSString *path = json[@"url"];
return path.length ? [NSURL URLWithString:path] : nil;
}];
许可
VSPromise遵循MIT许可协议。更多信息请参阅LICENSE文件。