Node.js 注意NodeJS中线程循环的结束
我必须在我的NodeJS应用程序中使用 我做循环。因此,我有两个选择: 备选案文1: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
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")
}