如何在 NodeJS 中并发执行一个函数

How to execute a function concurrently in NodeJS

在 Python 中,我有一个多处理工具 API,它将函数名称和参数列表作为输入,并根据您定义的大小生成进程。假设我有一个函数;

function viewSite(url) {
 console.log('Processing..'+url)  
 axios.get()...
}

如果我有一个包含 4 个 URL 的列表,我如何生成多个在单独的进程中执行的进程 space?

javascript会被一个线程正常解释和执行,不可能像你想的那样启动线程,但是:

  1. 您可以使用已添加的工作线程 https://nodejs.org/api/worker_threads.html 将一些工作分配给不同的 CPU 核心(在您的情况下您不需要这个,没有代码中的大量计算)

  2. 您可以为此 https://nodejs.org/api/child_process.html 使用一个新的子进程,它必须在您的系统上可用。这是个坏主意,复杂度太高了

  3. 您应该异步开发代码并使用 async/await,例如:

async function viewSite(url) {
    console.log('Processing..'+url);
    try{
        const res = await axios.get(url);
        return res.data;
    } catch(error){
        // do something or throw error;
    }
}

async function collectAllSitesData(){

  const results = await Promise.all([viewSite(url1),viewSite(url2),...]);

  // do something with results here, not after call of collectAllSitesData()
}

collectAllSitesData();

async functions return Promise,所以检查如何使用 async-approach,例如:https://javascript.info/async-await