5 // Created by Hori,Masaki on 2018/01/13.
6 // Copyright © 2018年 Hori,Masaki. All rights reserved.
11 let watingQueue = DispatchQueue(label: "Future")
14 private let queue: DispatchQueue
15 private let semaphore = DispatchSemaphore(value: 1)
17 private(set) var value: T?
18 private(set) var error: Error?
20 init(queue: DispatchQueue = watingQueue) {
31 func onSuccess(block: @escaping (T) -> Void) -> Future<T> {
37 self.semaphore.signal()
44 func onFailure(block: @escaping (Error) -> Void) -> Future<T> {
50 self.semaphore.signal()
56 func success(_ value: T) {
58 guard self.value == nil else { return }
59 guard self.error == nil else { return }
65 func failure(_ error: Error) {
67 guard self.value == nil else { return }
68 guard self.error == nil else { return }