我正尝试在puppeteer Js中获得所有外部样式表,而我并不仅获得一个。 这是我的代码:
try {
const browser = await puppeteer.launch();
const page = await browser.newPage();
page.on('response', async response => { // don't await anything on this line
if(response.request().resourceType() === 'stylesheet') {
resolve(response.text()); // await and resolve here
}
});
await page.goto(url);
await browser.close();
// don't resolve here
} catch (e) {
return reject(e);
}
这里的问题是,当我有1个以上外部样式表时,我无法获取它们。我将如何实现
注意:我使用的是resolve,因为我需要样式表以进行进一步的处理 处理。并消化了他们的返回。
答案 0 :(得分:0)
您可以将所有样式表(或它们的Promises)添加到数组中,然后在加载页面并解决Promises之后对其进行解析。
代码
try {
const browser = await puppeteer.launch();
const page = await browser.newPage();
const stylesheetPromises = [];
page.on('response', async response => {
if(response.request().resourceType() === 'stylesheet') {
stylesheet.push(response.text());
}
});
await page.goto(url);
await browser.close();
const stylesheets = await Promise.all(stylesheetPromises);
resolve(stylesheets);
} catch (e) {
return reject(e);
}
然后用包含所有样式表的字符串数组解决Promise(我认为此代码位于内部)。这是通过将response.text()
的所有Promises添加到数组来完成的,我们最终通过await
Promise.all
。之后,结果将返回。