Chapter 3. Swift Promises to Tame Asynchrony

Server-side applications typically make requests to other web services or databases, and these requests are usually asynchronous; the application does not stop to wait for the result to return. These requests may succeed or fail, and often the result contains the input to the next asynchronous request. For example, consider an application that can find the temperature at the user’s home. The application makes a request to a database to discover where the user lives, then makes a subsequent request to a weather service to get the temperature in that location. But if the database is missing an entry for a user, the subsequent request to the weather service must be skipped. In addition to sequencing the chain of asynchronous operations, an application must vary the sequence to cope with errors. The required logic can be a challenge to program.

This chapter shows how Swift’s support for first-class functions can be harnessed to implement promises, one of the most effective constructs for programming such chains. After reading this chapter, you will understand how promises work, and why they are so beneficial. To illustrate this, we have implemented a very basic version of PromiseKit called MiniPromiseKit that you can clone, refer to, and use in your projects.

This chapter explains promises in three incremental steps:

  1. Synchronous operations are linked together in a chain, each operation depending on the previous one, and each potentially ...

Get Extending Swift Value(s) to the Server now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.