Node.js 如何编写node';在PowerShell中异步并行?

Node.js 如何编写node';在PowerShell中异步并行?,node.js,powershell,asynchronous,Node.js,Powershell,Asynchronous,在node.js中,您可以一次启动几个异步函数,然后让它们在全部完成后将结果返回给函数: 在PowerShell中,我看到了一个类似的功能,它使用Start Jobbut!当实际尝试运行任务时,它们似乎滞后太多,无法无阻塞并并行启动: Write-Host "Running jobs $($start) - $($end)" for($i = [int]$start; $i -le $end; $i++) { $jobResults += Start-Job -Script

在node.js中,您可以一次启动几个异步函数,然后让它们在全部完成后将结果返回给函数:

在PowerShell中,我看到了一个类似的功能,它使用
Start Job
but!当实际尝试运行任务时,它们似乎滞后太多,无法无阻塞并并行启动:

   Write-Host "Running jobs $($start) - $($end)"
   for($i = [int]$start; $i -le $end; $i++) {
     $jobResults += Start-Job -ScriptBlock $someFunc | wait-job | receive-job
   }
我相信这源于
wait job
函数,该函数在收到启动的作业之前等待该作业完成


是否有一种方法可以像node async那样等待所有这些数据并将它们接收到一个数组中?还是我在看苹果和桔子?

您的代码片段实际上是同步运行作业的。要异步运行它们,请执行以下操作:

$jobs = {sleep 5; Write-Output "job1"}, {sleep 6; Write-Output "job2"}, {sleep 7; Write-Output "job3"}

$result = $jobs | foreach {  start-job $_ } | wait-job | receive-job
虽然启动作业将创建一个新进程(如果作业只运行几秒钟,则可能不是最佳选项)。如果需要在单独的线程中运行作业,则需要使用运行空间。您可以手动编写代码,但也有一些工具(如)

请查看并使用Get-Help获取所有cmdlet。也许您正在寻找更好的解释。你创建了一堆运行空间(比如说10个)并投入了大量的工作(100倍)每个运行空间都会完成自己的工作,完成后将进行下一个工作,直到一切都完成。。。最后,我的一个人完成了9项任务,另外12项任务,但一切都完成了。。。