async_utility 1.0.0

async_utility 1.0.0

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
Released最新版本发布2015 年 12 月

Isra San Jose Gonzalez 维护。



async

Async 是一个工具框架,它提供了异步工作功能,以帮助在没有阻塞 UI 的情况下处理后台任务。

它受到了来自 JavaScript 模块 https://github.com/caolan/async 的启发。

快速示例

async.parallel(@[^(callbackBlock next) {
NSLog(@"block1");
sleep(2);
next(nil,@"block1");
},^(callbackBlock next) {
NSLog(@"block2");
sleep(7);
next(nil,@"block2");
},^(callbackBlock next) {
NSLog(@"block3");
sleep(4);
next(nil,@"block3");
}],^(NSError *err,id res) {
NSLog(@"err : %@ , res : %@",err,res);
});

控制流

框架上可用的方法

  • parallel
  • series
  • waterfall

控制流

parallel

并行和异步地运行函数数组,不需要等待之前的函数完成。如果任何函数将其回调的错误传递给回调,则主回调立即以错误的值调用。一旦任务完成,结果将作为数组传递给最后的回调。

参数

tasks - 包含要运行的函数的数组或对象。 callback(err,res) - 所有函数成功完成后运行的回调。

示例

async.parallel(@[^(callbackBlock next) {
// do some stuff ... it will run asynchronously
next(nil,@"one");
},^(callbackBlock next) {
// do some stuff ... it will run asynchronously
next(nil,@"two");
}],^(NSError *err,id res) {
NSLog(@"err : %@ , res : %@",err,res);
});

series

按顺序和异步地运行 tasks 数组中的函数,每个函数在完成前一个函数后运行。如果序列中的任何函数将其回调的错误传递给回调,则不会运行更多函数,并且回调立即以错误的值调用。否则,当任务完成时,通过结果数组接收回调。

参数

tasks - 包含要运行的函数的数组或对象。 callback(err,res) - 所有函数成功完成后运行的回调。

示例

async.series(@[^(callbackBlock next) {
// do some stuff ... it will run asynchronously
next(nil,@"one");
},^(callbackBlock next) {
// do some stuff ... it will run asynchronously
next(nil,@"two");
}],^(NSError *err,id res) {
NSLog(@"err : %@ , res : %@",err,res);
});

waterfall

按顺序和异步地运行函数数组,每个函数将其结果传递给数组中的下一个函数。然而,如果任何任务将其自己的回调的错误传递,则不会执行下一个函数,并且主回调立即以错误调用。

参数

tasks - 包含要运行的函数的数组或对象。 callback(err,res) - 所有函数成功完成后运行的回调。

示例

async.waterfall(@[^(id data,waterfallBlock next) {
// do some stuff ... it will run asynchronously
next(@"one",nil,@"one");
},^(id data,waterfallBlock next) {
// do some stuff ... it will run asynchronously
next(nil,nil,@"two");
}],^(NSError *err,id res) {
NSLog(@"err : %@ , res : %@",err,res);
});