Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 注意NodeJS中线程循环的结束_Node.js_Multithreading - Fatal编程技术网

Node.js 注意NodeJS中线程循环的结束

Node.js 注意NodeJS中线程循环的结束,node.js,multithreading,Node.js,Multithreading,我必须在我的NodeJS应用程序中使用 我做循环。因此,我有两个选择: 备选案文1: async function makePngScreenshot(url, meterId, filename) { axios.get(url, null); // Make the request to generate html page await new Pageres({delay: 2, filename: filename}) .src(url, ['1300x6

我必须在我的NodeJS应用程序中使用

我做循环。因此,我有两个选择:

备选案文1:

async function makePngScreenshot(url, meterId, filename) {
    axios.get(url, null); // Make the request to generate html page
    await new Pageres({delay: 2, filename: filename})
        .src(url, ['1300x650'], {crop: true})
        .dest("public/images/" + operation.data.name + "/" + yearAndMonthFolder + "/" + meterId
        )
        .run();
}
然后称之为:

for (let firstDay = monday; firstDay < lastDay; firstDay.add(7, "day")) {
    await makePngScreenshot(url, id, filename);
}
并称之为:

for (let firstDay = monday; firstDay < lastDay; firstDay.add(7, "day")) {
        makePngScreenshot(url, id, filename);
    }
console.log("done")
for(让firstDay=monday;firstDay
这个方法要快得多,我想使用它,但我不知道如何在所有截图生成之后打印
done
,现在,它在生成之前打印

如何知道所有线程的结束?

可用于此目的。您需要从makePngScreenShot返回一个承诺,这是一个较小的修改,还需要从异步函数调用makePngScreenShot

这看起来是这样的:

async function makePngScreenshot(url, meterId, filename) {
    await axios.get(url, null); // Make the request to generate html page
    return new Pageres({delay: 2, filename: filename})
        .src(url, ['1300x650'], {crop: true})
        .dest("public/images/" + operation.data.name + "/" + yearAndMonthFolder + "/" + meterId
        )
        .run();
}

async function makeScreenshots() {
    let promises = []; 
    for (let firstDay = monday; firstDay < lastDay; firstDay.add(7, "day")) {
        promises.push(makePngScreenshot(url, id, filename));
    }
    // Wait for all promises to resolve
    await Promise.all(promises);
    console.log("done")
}
异步函数makePngScreenshot(url、meterId、filename){
wait axios.get(url,null);//请求生成html页面
返回新页面({延迟:2,文件名:filename})
.src(url,['1300x650'],{crop:true})
.dest(“public/images/”+operation.data.name+“/”+yearAndMonthFolder+“/”+meterId
)
.run();
}
异步函数makeScreenshots(){
让承诺=[];
for(让firstDay=monday;firstDay
太棒了!祝项目顺利!
async function makePngScreenshot(url, meterId, filename) {
    await axios.get(url, null); // Make the request to generate html page
    return new Pageres({delay: 2, filename: filename})
        .src(url, ['1300x650'], {crop: true})
        .dest("public/images/" + operation.data.name + "/" + yearAndMonthFolder + "/" + meterId
        )
        .run();
}

async function makeScreenshots() {
    let promises = []; 
    for (let firstDay = monday; firstDay < lastDay; firstDay.add(7, "day")) {
        promises.push(makePngScreenshot(url, id, filename));
    }
    // Wait for all promises to resolve
    await Promise.all(promises);
    console.log("done")
}