## Coordinating Async Operations Daniel Saidi · [@danielsaidi](https://twitter.com/danielsaidi)
# In this talk * Problem Definition * 3rd Party Libraries * Case Study * Live Coding * Discussions
# Why this talk? * Coordinating async operations is tricky * Serial vs. concurrent operations etc. * Limited native support * Completion blocks aren't enough * We need more sophisticated ways
# 3rd party libraries
# Conclusion * There are many 3rd party libraries for this * Many are very powerful * Many will affect your architecture * Sometimes 3rd party libraries are not an option
# Case study
# BookBeat * Extensive offline support, for instance: * Book actions (add/remove, listen/read, etc.) * Bookmarks * Analytics * Sync/update when the app comes online
# Sync/update * Sync book actions (one by one, serial) * Sync bookmarks (batches, concurrent) * Sync analytics (batches, concurrent) * Fetch latest data (many sources, concurrent)
# Problem * Completely different needs for each operation * Some operate on items, others on batches * Some are serial, others concurrent * Most must be coordinated, others can run in bg * We don't want to use 3rd party dependencies
# Approach * Describe the operations as protocols * Find a good way to compose protocols * Provide as much functionality as possible * While still allowing customizations * Composition over inheritance
# Live Coding
# Conclusions
# Thank you! ## Questions? Daniel Saidi · [@danielsaidi](https://twitter.com/danielsaidi)