NSOperation(NSOperationQueue) dependency manager library.
pod 'OperationPromise', :git =>'https://github.com/azu/OperationPromise.git'
OperationPromise
has then
and when
method.
It possible to chain methods.
Example of then
NSMutableArray *race = [NSMutableArray array];
NSBlockOperation *blockOperation1 = [NSBlockOperation blockOperationWithBlock:^{
[race addObject:@1];
}];
NSBlockOperation *blockOperation2 = [NSBlockOperation blockOperationWithBlock:^{
[race addObject:@2];
}];
NSBlockOperation *blockOperation3 = [NSBlockOperation blockOperationWithBlock:^{
[race addObject:@3];
}];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[OperationPromise promise:queue]
.then(blockOperation1)
.then(blockOperation2)
.then(blockOperation3)
.start();
[queue waitUntilAllOperationsAreFinished];// sync wait....
NSArray *expect = @[@1, @2, @3];
XCTAssertEqualObjects(race, expect);
// Call @1 -> @2 -> @3
Example of when
NSMutableArray *race = [NSMutableArray array];
NSBlockOperation *blockOperation1 = [NSBlockOperation blockOperationWithBlock:^{
[race addObject:@1];
}];
NSBlockOperation *blockOperation2 = [NSBlockOperation blockOperationWithBlock:^{
[race addObject:@2];
}];
NSBlockOperation *blockOperation3 = [NSBlockOperation blockOperationWithBlock:^{
[race addObject:@3];
}];
NSBlockOperation *blockOperation4 = [NSBlockOperation blockOperationWithBlock:^{
[race addObject:@4];
}];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[OperationPromise promise:queue]
.then(blockOperation1)
.when(@[blockOperation2, blockOperation3])
.then(blockOperation4)
.start();
[queue waitUntilAllOperationsAreFinished];// wait perform all operation...
NSArray *expect = @[@1, @2, @3, @4];
XCTAssertEqualObjects(race[0], expect[0]);
XCTAssertEqualObjects(race[3], expect[3]);
// call @1 -> (@2 or @3) -> @4
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
MIT