AsyncTaskTrigger使用说明
Example
To run the example project, clone the repo, and run pod install
from the Example directory first.
Requirements
Installation
AsyncTaskTrigger is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'AsyncTaskTrigger'
使用方法
异步串行任务
// ---------1、获取触发器单利
AsyncTaskTrigger *trigger = [AsyncTaskTrigger shareTrigger];
__weak typeof (&*trigger)wtrigger = trigger;
// 每一组任务 都需要有一个GroupKey
NSString *groupKey = @"serial_group_serial";
// --------添加任务A
[trigger addTaskAction:^{
// 开始执行任务A
[self actionBlockAWithComplet:^{
// 任务完成后 需要向指定 groupKey 对应的任务组 发送信号量;
[wtrigger sendSemaphoreToGroupKey:groupKey];
// 如果某些异步任务是通过代理的方式回调 可以在完成处这样标记下
// [[AsyncTaskTrigger shareTrigger]sendSemaphoreToGroupKey:groupKey];
}];
} asyncType:LXTaskAsyncTypeSerial groupKey:groupKey completBlock:^{
// 本次任务完成后的回调
}];
// -----------添加任务B
[trigger addTaskAction:^{
// 执行任务B
[self actionBlockBWithComplet:^{
[wtrigger sendSemaphoreToGroupKey:groupKey];
}];
} asyncType:LXTaskAsyncTypeSerial groupKey:groupKey completBlock:nil];
// Block回调发送信号量 另外一种方式
[trigger addTaskHandlerAction:^(LXTaskActionBlock _Nullable semaphoreHandle) {
[self actionBlockAWithComplet:^{
// 可以直接在这里调用这个Block即可
semaphoreHandle();
}];
} asyncType:LXTaskAsyncTypeSerial groupKey:groupKey completBlock:nil];
[trigger startTaskActionWithGroupKey:groupKey completBlock:^{
NSLog(@"kael -- 所有的任务都完成了");
}];
异步并行任务
异步任务只需要更改asyncType类型LXTaskAsyncTypeSerial --> LXTaskAsyncTypeParallel
[trigger addTaskAction:^{
[self actionBlockAWithComplet:^{
[wtrigger sendSemaphoreToGroupKey:groupKey];
}];
} asyncType:LXTaskAsyncTypeParallel groupKey:groupKey completBlock:nil];
[trigger addTaskAction:^{
[self actionBlockBWithComplet:^{
[wtrigger sendSemaphoreToGroupKey:groupKey];
}];
} asyncType:LXTaskAsyncTypeParallel groupKey:groupKey completBlock:nil];
[trigger addTaskHandlerAction:^(LXTaskActionBlock _Nullable semaphoreHandle) {
[self actionBlockAWithComplet:^{
semaphoreHandle();
}];
} asyncType:LXTaskAsyncTypeParallel groupKey:groupKey completBlock:nil];
[trigger startTaskActionWithGroupKey:groupKey completBlock:^{
NSLog(@"kael -- 所有的任务都完成了");
}];
Author
Kael, zhouzuosong_kael@163.com@163.com
License
AsyncTaskTrigger is available under the MIT license. See the LICENSE file for more info.