Я новичок в ожидании / асинхронности в современном javascript. Я понимаю, что есть много вопросов, связанных с этим в целом, но в этом вопросе я специально ищу шаблон для размышления о том, как взять одну функцию и переписать ее в виде карты массива.
Я начинаю с очень простой функции скриншота из здесь :
const puppeteer = require('puppeteer');
puppeteer.launch().then(async browser => {
const page = await browser.newPage();
await page.goto('https://example.com');
await page.screenshot({path: 'screenshot.png'});
await browser.close();
});
Это только один скриншот. Я хотел бы дать ему массив и сделать несколько снимков экрана.
Для моего приложения я немного подправил переменную mypage:
const puppeteer = require('puppeteer');
puppeteer.launch().then(async browser => {
const mypage = 1
const page = await browser.newPage();
await page.goto(`https://localhost:9001/${mypage}`);
await page.screenshot({path: `${mypage}.png`});
await browser.close();
});
Теперь я хотел бы параметризовать этот список по mypages = [1 ... 1000]. В старом javascript, используя underscore.js, я бы попробовал что-то вроде:
// define the function
function ss(mypage) {
puppeteer.launch().then(async browser => {
const page = await browser.newPage();
await page.goto(`https://localhost:9001/${mypage}`);
await page.screenshot({path: `${mypage}.png`});
await browser.close();
});
}
// populate the array of pages, eg make var mypages = [1,2,3...1000]
var mypages = [];
for (var i = 1; i <= 1000; i++) {
mypages.push(i);
}
// call the screenshot function on each page in my pages.
_.each(mypages, ss)
Мне не ясно, как я мог бы использовать async / await для работы над каждой страницей в mypages (и, возможно, для создания этого массива более идиоматически, тоже).
Как мне переписать функцию кукловода, которая работает для mypage = 1, чтобы отобразить весь массив mypages?