2024.11.14
いまさらNode.jsを知ろう~環境構築も~
2014.06.06
開発環境・ツール非同期処理にBoltsを使って処理をシンプルに
こんにちは、TKです。
iPhoneでの非同期処理の記述で便利そうなのがあったので紹介します。
https://github.com/BoltsFramework/Bolts-iOS
BasSの勉強会で名前が出たParseが提供しているライブラリです。
インストールはcocoaPodsで
pod "Bolts"
簡単な動作例を
// 非同期処理の呼び出し側 [[self doSomething] continueWithSuccessBlock:^id(BFTask* task) { //非同期処理が終わったら実行 ... return nil; }] - (BFTask *)doSomething { BFTaskCompletionSource *task = [BFTaskCompletionSource taskCompletionSource]; dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_async(queue, ^{ //非同期の処理 [task setResult:object]; } return task.task; }
以下で非同期処理結果による場合分けもできます。
[[self saveAsync:obj] continueWithBlock:^id(BFTask *task) { if (task.isCancelled) { // the save was cancelled. } else if (task.error) { // the save failed. } else { // the object was saved successfully. PFObject *object = task.result; } return nil; }];
複数の非同期処理の並列処理も可能です
NSMutableArray *tasks = [[NSMutableArray alloc] init]; for (Message *msg in messages) { BFTask *task = [self doSumthing:msg]; [tasks addObject:task]; } [[BFTask taskForCompletionOfAllTasks:tasks] continueWithBlock:^id(BFTask *task) { // 全ての非同期処理が終わったら実行 ... return nil; }];
【記事への感想募集中!】
記事への感想・ご意見がありましたら、ぜひフォームからご投稿ください!【テクノデジタルではエンジニア/デザイナーを積極採用中です!】
下記項目に1つでも当てはまる方は是非、詳細ページへ!Qangaroo(カンガルー)
【テクノデジタルのインフラサービス】
当社では、多数のサービスの開発実績を活かし、
アプリケーションのパフォーマンスを最大限に引き出すインフラ設計・構築を行います。
AWSなどへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。
最近の記事
タグ検索