In this chapter, we took a detailed look at ES6 Generators. Generators are one of the most anticipated features of ES6. The ability to pause and resume execution of a function opens up a lot of possibilities around co-operative programming. The primary strength of generators is that they provide a single-threaded, synchronous-looking code style, while hiding the asynchronous nature away. This makes it easier for us to express in a very natural way what the flow of our program's steps/statements is without simultaneously having to navigate asynchronous syntax and gotchas. We achieve separation of concern using generators due to this.
Generators work hand-in-hand with the iterators and iterables contract. These are welcome addition to ES6 and significantly boosts the data structures the language offers. Iterators provide a simple way to return a (potentially unbounded) sequence of values. The @@iterator
symbol is used to define default iterators for objects, making them an iterable...