当JavaScript中的browser内部有Promise.all()时,可以通过以下步骤从木偶中的page.evaluate()返回数据:
下面是一个示例代码,演示了如何从木偶中的page.evaluate()返回数据:
const puppeteer = require('puppeteer');
async function getDataFromPage() {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
const data1 = page.evaluate(() => {
// 在浏览器上下文中执行的代码
return new Promise(resolve => {
setTimeout(() => {
resolve('Data 1');
}, 1000);
});
});
const data2 = page.evaluate(() => {
// 在浏览器上下文中执行的代码
return new Promise(resolve => {
setTimeout(() => {
resolve('Data 2');
}, 2000);
});
});
const data3 = page.evaluate(() => {
// 在浏览器上下文中执行的代码
return new Promise(resolve => {
setTimeout(() => {
resolve('Data 3');
}, 3000);
});
});
const allData = await Promise.all([data1, data2, data3]);
console.log(allData); // 输出 ['Data 1', 'Data 2', 'Data 3']
await browser.close();
}
getDataFromPage();
在上面的示例代码中,我们使用了Puppeteer库创建了一个Headless Chrome浏览器实例,并在页面中执行了三个异步操作。这些异步操作通过page.evaluate()函数在浏览器上下文中执行,并返回了Promise对象。然后,我们使用Promise.all()方法等待这些异步操作全部完成,并通过await关键字获取它们的结果。最后,我们将所有数据打印到控制台。
请注意,上述示例代码中的URL和具体的异步操作只是示例,你可以根据实际需求进行修改和扩展。另外,本示例中使用的是Puppeteer库,你可以根据自己的喜好和需求选择其他适合的工具或库。
领取专属 10元无门槛券
手把手带您无忧上云