Using plain JavaScript
Now that we have met our first example of callback hell, we know what we should definitely avoid; however, that's not the only concern when writing asynchronous code. In fact, there are several situations where controlling the flow of a set of asynchronous tasks requires the use of specific patterns and techniques, especially if we are only using plain JavaScript without the aid of any external library. For example, iterating over a collection by applying an asynchronous operation in sequence is not as easy as invoking forEach()
over an array, but it actually requires a technique similar to a recursion.
In this section, we will learn not only about how to avoid callback hell but also how to implement some of the most common control flow patterns using only simple and plain JavaScript.
Callback discipline
When writing asynchronous code, the first rule to keep in mind is to not abuse closures when defining callbacks. It can be tempting to do so, because it does not require...