no message

This commit is contained in:
Peter 2018-06-16 20:02:35 +03:00
parent 3fc7e73578
commit 1ecaf8cf5f

View File

@ -28,4 +28,26 @@ public final class QueueLocalObject<T: AnyObject> {
}
}
}
public func syncWith<R>(_ f: @escaping (T) -> R) -> R? {
var result: R?
self.queue.sync {
if let valueRef = self.valueRef {
let value = valueRef.takeUnretainedValue()
result = f(value)
}
}
return result
}
public func signalWith<R, E>(_ f: @escaping (T, Subscriber<R, E>) -> Disposable) -> Signal<R, E> {
return Signal { [weak self] subscriber in
if let strongSelf = self, let valueRef = strongSelf.valueRef {
let value = valueRef.takeUnretainedValue()
return f(value, subscriber)
} else {
return EmptyDisposable
}
} |> runOn(self.queue)
}
}