Home  >  Article  >  Web Front-end  >  How to Execute a Callback After All Asynchronous Callbacks Within a 'forEach' Loop Finish?

How to Execute a Callback After All Asynchronous Callbacks Within a 'forEach' Loop Finish?

Barbara Streisand
Barbara StreisandOriginal
2024-11-06 04:19:03852browse

How to Execute a Callback After All Asynchronous Callbacks Within a 'forEach' Loop Finish?

Asynchronous Callback Execution after 'forEach' Iteration

Query:

How can a callback be executed after all asynchronous callbacks of a 'forEach' loop are completed?

Solution:

Array.forEach does not inherently support this functionality. However, there are several alternative approaches to achieve this goal:

1. Counter:

Keep track of the number of processed items using a counter. Increment the counter in the callback of each asynchronous operation and invoke the final callback when the counter reaches the total number of items.

2. Promises (ES6):

a. Sequential Execution:

Chain promises in sequence to guarantee synchronous execution of asynchronous tasks, ensuring each item is processed in the order they appear in the array.

b. Parallel Execution:

Use the Promise.all() method to execute all asynchronous tasks in parallel without guaranteeing execution order.

3. Async Library:

Popular libraries like Async.js provide mechanisms to express the required behavior, such as Async#series() and Async#parallel().

Original Example Implementation (Synchronous):

The original code in the question exemplified a synchronous scenario, and the following implementation can be used:

posts.foreach(function(v, i) {
  res.write(v + ". index " + i);
});

res.end();

The above is the detailed content of How to Execute a Callback After All Asynchronous Callbacks Within a 'forEach' Loop Finish?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn