lviv md day 2015 Олексій Демедецький "using future for async flow application...

Post on 11-Apr-2017

297 Views

Category:

Business

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

USING FUTURES

@daloog

ABOUTskype: nobidon dalog@me.com

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

top related