Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.

JavaScript Iteration protocol workshop

Node.js CI

A workshop about JavaScript iteration protocols: iterator, iterable, async iterator, async iterable by @loige. 😎

I also have a workshop about Node.js Streams.


Before getting started, make sure you have the following installed:

  • Node.js 16+
  • NPM 8+
  • A text editor of your choice
  • A bash-compatible shell

Getting started

Clone the repository and run npm install to get all the necessary dependencies.

The workshop is divided in chapters and the first chapter starts at 01-intro.

Every chapter will teach you a specific iteration concept and offer you some examples and exercises to familiarize with that concept.

You will often find 2 different types of interactive actions:

  • 🎭 PLAY : commands or instructions you should spend some time with to get familiar with some concepts or APIs

  • 🏹 Exercise: when you have to use some of the concepts you just learned to solve a programming problem. Generally every exercise will have a test that you can run to validate your solution.

Enjoy! 🙃


Shameless plug 😇

If you like this piece of work, consider supporting me by getting a copy of Node.js Design Patterns, Third Edition, which also goes into great depth about generators, iterator protocols, streams and related design patterns.

If you already have this book, please consider writing a review on Amazon, Packt, GoodReads or in any other review channel that you generally use. That would support us greatly 🙏.


In the spirit of Open Source, everyone is very welcome to contribute to this project. You can contribute just by submitting bugs or suggesting improvements by opening an issue on GitHub or by submitting a PR.


Licensed under MIT License. © Luciano Mammino.


A workshop about JavaScript iteration protocols: iterator, iterable, async iterator, async iterable







No releases published


No packages published