OSDN Git Service

andThenを追加
authormasakih <masakih@users.sourceforge.jp>
Tue, 23 Jan 2018 12:45:15 +0000 (21:45 +0900)
committermasakih <masakih@users.sourceforge.jp>
Tue, 23 Jan 2018 12:45:15 +0000 (21:45 +0900)
KCD/Future.swift

index 7c31b48..23b563d 100644 (file)
@@ -238,6 +238,19 @@ extension Future {
             }
         }
     }
+    
+    @discardableResult
+    func andThen(_ f: @escaping (Result<T>) -> Void) -> Future<T> {
+        
+        return Promise<T>()
+            .complete {
+                guard let result = self.await().result else { fatalError("Future not complete") }
+                
+                f(result)
+                return result
+            }
+            .future
+    }
 }
 
 private extension Future {