DEV Community

Cover image for Asynchronous Loops in JavaScript
Dmitrii Zakharov
Dmitrii Zakharov

Posted on

Asynchronous Loops in JavaScript

Asynchronous Loops in JavaScript

How can we iterate over an array asynchronously in JavaScript? Is it even possible?

Let's begin with the simplest method: using a for loop while calling await for asynchronous operations. Here's an example:

const callback = async (item, index, arr) => {
  // Async operation
};

const array = [1, 2, 3];
for (let i = 0; i < array.length; i++) {
  await callback(array[i], i, array);
}
Enter fullscreen mode Exit fullscreen mode

This method is straightforward to implement. However, what are the drawbacks of this approach? The main concern is usability; we are all accustomed to using .map(), .forEach(), and other methods built into Array.prototype.

So, are there other ways to iterate through a loop? Yes, we can use recursion. In this method, each iteration is processed through a separate callback. Here's an example:

const iterate = async (index, array) => {
  // Await an operation
  if (index !== array.length - 1) {
    await iterate(index + 1, array);
  }
};
Enter fullscreen mode Exit fullscreen mode

This recursive method offers no advantages over a for loop, but it is a valid implementation.

For years, I have relied on the first method across various projects. To simplify my work, I decided to create a small, publicly accessible library that can be utilized with any framework. Thus, I developed the library available at: 🔗 waitEach.

This library is easy to include and offers two methods: install and waitEach.

  • The first method extends Array.prototype by adding a new method, .waitEach, which functions similarly to .map(), .forEach(), and other native methods, providing a more convenient API.
  • The second method allows you to execute waitEach without extending Array.prototype.

I encourage you to try it out!

If you found this useful, leave a ❤️ or 🦄 so others can discover it too!

Top comments (0)