Using Generators
The Promise-based approach to manage asynchronous tasks gives us a powerful tool to write a more readable code and have better control over their execution. However, the style we use to write code still needs to be conscious of the asynchronous nature of the tasks. Even if we can do without nesting callbacks using the then()
and catch()
methods and composing Promises using the all()
and race()
methods, we are essentially calling callbacks anyway. An ideal approach should let us write asynchronous code in the same way we write synchronous code. We can make something similar using the new ECMAScript 6 Generators.
Introducing Generators
The ES6 Generators are functions that can be paused. Unlike normal functions that runs until they reach the end or execute a return
statement, a Generator can be suspended and then can be resumed. Let's take a look at a simple Generator like the following:
function *counter() { yield 1; yield 2; yield 3; }
From a syntactic point of view...