如何使用不同的参数异步运行很多函数?

Posted

技术标签:

【中文标题】如何使用不同的参数异步运行很多函数?【英文标题】:How to run a lot of functions asynchronously with different parameters? 【发布时间】:2020-03-09 13:36:19 【问题描述】:

我有一个像deleteItem(id) 这样的异步函数和一个ids 的数组。 如何为每个 id 同时异步运行相同的函数?

Promise.all 在这种情况下有帮助吗?

deleteItem - 从谷歌云存储中删除文件

【问题讨论】:

这完全取决于deleteItem() 的实际作用。但是,您没有发布。 Promise.all 将有助于在所有并行异步功能完成时获得通知。但是请注意,javascript 是单线程的。只有“离开” JS 环境的 I/O 操作才能真正被并行化。 (当然,你总是可以产生更多的进程)。所以正如Pointy所说,这真的取决于deleteItem做了什么。 deleteItem() 执行从谷歌云存储中删除文件的承诺 【参考方案1】:

你可以试试这样的:

var ids = ['id1', 'id2', 'id3'];
var myParallelTasks = [];

//push all delete functions in an array
ids.forEach( function( id )

    myParallelTasks.push( deleteItem( id, function(callback)
    
       callback();
    )
    );


//wait for all to finish
async.parallel( myParallelTasks, function()

    // all done
    console.log( "All files were deleted " );          
);

【讨论】:

以上是关于如何使用不同的参数异步运行很多函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何使函数异步运行?

如何使用 Q.js 在循环中执行异步函数

如何使用调度库运行异步函数?

如何使用异步 Web 请求进行多线程

如何快速使用异步函数?完成处理程序[重复]

如何使用异步函数异步监听 Firestore 中的值?