Skip to content

Instantly share code, notes, and snippets.

@maximgavrilov
Last active August 11, 2016 13:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maximgavrilov/a4f2233d4f134feb92ff286833af9c97 to your computer and use it in GitHub Desktop.
Save maximgavrilov/a4f2233d4f134feb92ff286833af9c97 to your computer and use it in GitHub Desktop.
#import <Bolts/Bolts.h>
@property (strong, nonatomic) BFTask *backgroundRequest1;
- (BFTask<NSData *> *)dataTaskWithURL:(NSURL *)url
{
BFTaskCompletionSource *taskCompletionSource = [BFTaskCompletionSource taskCompletionSource];
NSURLSessionDataTask *task = [[NSURLSession sharedSession] dataTaskWithURL:url
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
if (httpResponse.statusCode == 200 && !error && data) {
[taskCompletionSource setResult:data];
} else {
[taskCompletionSource setError:error];
}
}];
[task resume];
return taskCompletionSource.task;
}
- (BFTask *)request1
{
return [self dataTaskWithURL:"URL1"];
}
- (BFTask *)request2
{
return [self dataTaskWithURL:"URL2"];
}
- (void)viewDidLoad
{
backgroundRequest1 = [self request1];
}
- (void)handleClick
{
__weak weakSelf = self;
[[[backgroundRequest1 continueWithBlock:^id(BFTask *task) {
if (task.error) {
return [weakSelf request1];
}
return [BFTask taskWithResult:task.result];
}] continueWithSuccessBlock:^id(BFTask *task) {
return [weakSelf request2];
}] continueWithBlock:^id(BFTask *task) {
if (task.error) {
// show alert!
} else {
// show next screen
}
return nil;
}];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment