swiftナニソレなのでコードはObjective-Cです。
ほぼ公式のAFHTTPRequestOperation
によるサンプルのまんま。
GETのPromise版オーバーロードを作る。
@interface AFHTTPSessionManager (PromiseKit)
- (PMKPromise *) GET: (NSString *) URLString parameters: (NSDictionary *) parameters {
return [PMKPromise new:^(PMKPromiseFulfiller fulfiller, PMKPromiseRejecter rejecter) {
NSURLSessionTask *task =
[self GET: URLString
parameters: parameters
success:^(NSURLSessionTask *task, id responseObject) {
fulfiller(PMKManifold(task, responseObject));
}
failure:^(NSURLSessionTask *task, NSError *error) {
rejecter(error);
}
];
[task resume];
}];
}
@end
fulfillerが成功時に渡す結果、rejecterが失敗時に渡す結果とかそんな感じっぽい。
PMKManifoldを使うことで、一つ以上のオブジェクトの受け渡しにも対応出来る。
こんな感じで使える。
[manager GET: @"nnaaaa" parameters:nil]
.then(^(NSURLSessionTask *task, id responseObject) {
NSLog(@"%@", responseObject);
});
POST
とかも同様な感じですね。
すげー簡単に使えるのでPromiseKitすばらしいですね。