Upload
lviv-startup-club
View
297
Download
0
Embed Size (px)
Citation preview
USING FUTURES
@daloog
ABOUTskype: nobidon [email protected]
https://speakerdeck.com/dalog
ASYNC VS
PARALLEL
ASYNC
DO THINGS AT DEFERENT TIME
PARALLEL
DO THINGS AT THE SAME TIME
GCD
GCD
NSOPERATION
NSOPERATION
[ _ TARGET: ACTION: ]
DELEGATE
STRATEGY AND
CALLBACK
BLOCK
CALLBACK!!!
SIGNATURE DANCE
SEPARATE WORK FROM
RESULT DELIVERY
SETTER
T -> ()
GETTER
() -> T
T -> U IS
(GET, SET) -> ()
T -> U (() -> T, U -> ()) -> ()
🙀💀
ASYNC?
ASYNC GETTER
() -> T (T -> ()) -> ()
SET -> ()
SET<T> -> ()
FUTURE<T>
ASYNC SETTER
T -> () () -> (T -> ())
() -> SET
() -> SET<T>
PROMISE<T>
GETTER +
SETTER =
STATE
PROMISE +
FUTURE =
ASYNC STATE
ASYNC STATE >>>
STATE
WHY THIS IS SO HARD???
ACTUALLY NOT
THINK ABOUT FUTURE AS A BOX
BOX WILL BE OPENED.
SOMEDAY. MAYBE.
A = B C = A
CHAIN?
T -> U U -> K
T -> K
T -> F<U> U -> F<K>
T -> F<K>
(F<U> , U -> F<K>) ->
F<K>
AND THEN
FLAT MAP
ERROR?
TRY<T, E>
FUTURE<T, E> =
FUTURE<TRY<T, E>>
WHAT CAN BE FUTURE?
ANYTHING
UI
USING FUTURES FOR REVERSING UI FLOW.
HTTPS://MEDIUM.COM/P/D3F5B7CA32D9/EDIT
VM -> F<ACTION>
NETWORK BLUETOOTH
…
EXPOSE F<> AS PUBLIC API
ALWAYS
USE ANY LIB
• https://github.com/BoltsFramework/Bolts-iOS
• https://github.com/mxcl/PromiseKit
• https://github.com/Thomvis/BrightFutures
• https://realm.io/news/swift-summit-javier-soto-futures/
• https://realm.io/news/swift-tasks-nevyn-bengtsson/
ALL LIBS EQUAL
ITS JUST ASYNC STATE
FUTURE / PROMISE ASYNC GET/SET