JavaScript 如何使用async/await与forEach循环

JavaScript 如何使用async/await与forEach循环

异步 现在很流行,因为它提供了允许多个任务同时执行(同时执行)的功能,这有助于提高代码的生产力和效率。

async/await 用于编写异步代码。在JavaScript中,我们使用循环技术通过forEach循环遍历数组。

在forEach循环中使用async/await:

方法:

  • 创建一个包含一些值的数组,例如 myArray
  • 创建一个异步主函数调用另一个异步函数 doSomethingAsync
  • 现在创建一个异步函数,在其中使用 setTimeout 打印数组的所有项。
  • 该函数返回一个在延迟完成时解析的Promise对象。

Javascript代码:

<script> 
    const myArray = [1, 2, 3, 4, 5]; 
  
    // A function that returns a promise  
    // that resolves after a random delay 
    async function doSomethingAsync(item) { 
        return new Promise(resolve => { 
            setTimeout(() => { 
                console.log(item); 
                resolve(); 
            }, Math.random() * 1000); 
        }); 
    } 
  
    async function main() { 
  
        // Wait for all promises returned by  
        //doSomethingAsync to resolve. 
        await Promise.all( 
          
            // Use map to create an array of promises,  
            // with one promise for each item in myArray. 
            myArray.map(async item => { 
                  
                // Wait for the promise returned by  
                //doSomethingAsync to resolve. 
                await doSomethingAsync(item); 
            }) 
        ); 
    } 
  
    // Call main to start the program. 
    main(); 
</script> 

工作:

  • 主要功能被标记为async,这意味着它返回一个promise。
  • 我们使用Promise.all来等待所有由doSomethingAsync返回的promise完成,然后再继续执行下一行代码。
  • 在Promise.all中,我们使用map来创建一个promise的数组,每个promise都调用doSomethingAsync来处理数组中的一个单独项。
  • 我们使用await关键字来等待每个promise完成,然后再继续处理数组中的下一个项。

输出:

JavaScript 如何使用async/await与forEach循环

另一个例子:

JavaScript

<script> 
    const myArray = ["geeks", "for", "geeks"]; 
  
    // A function that returns a promise  
    //that resolves after a random delay 
    async function doSomethingAsync(item) { 
        return new Promise(resolve => { 
            setTimeout(() => { 
                console.log(item); 
                resolve(); 
            }, Math.random() * 1000); 
        }); 
    } 
  
    async function main() { 
  
        // Wait for all promises returned  
        // by doSomethingAsync to resolve 
        await Promise.all( 
  
            // Use map to create an array of promises,  
            // with one promise for each item in myArray 
            myArray.map(async item => { 
                  
                // Wait for the promise returned by 
                // doSomethingAsync to resolve 
                await doSomethingAsync(item); 
            }) 
        ); 
    } 
  
    // Call main to start the program. 
    main();  
</script> 

输出:

JavaScript 如何使用async/await与forEach循环

解释: 由于打印元素的延迟,为了节省时间,在myArray中将先打印另一个元素” for “,然后才是第一个元素” geeks “。这说明异步函数同时运行。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程