【发布时间】:2021-07-10 21:45:50
【问题描述】:
如果我“转到”包含异步代码的网页,它不会被执行,我不明白为什么。有人可以帮忙吗?
节点:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('http://127.0.0.1:8080/?code=ABC123&id=1', {
waitUntil: 'networkidle0',
});
await page.screenshot({ path: 'example.png' });
await browser.close();
})();
网页:
onmount = () => {
const params = new URLSearchParams(document.location.search);
const code = params.get('code');
// above lines are executed
// the code below is never executed
// search is an async function (not shown for brevity)
search(code).then(result => document.getElementById('title').textContent = result.title);
};
【问题讨论】:
-
如果您手动访问您的应用程序,它可以工作吗?
-
“未执行”是指屏幕截图和浏览器的关闭发生在标题 textContent 更新之前?
-
@vinicious 网页代码在浏览器中按预期工作
-
@theDavidBarton 我不确定异步代码是否正在执行。如果是,则 Chromium / puppeteer 不会等待它
-
重读@theDavidBarton 的问题和我的回答后,异步代码正在执行但在 Chromium 中没有等待更有意义。它在浏览器中执行和等待,所以我不明白为什么它不在 Chromium 中?
标签: javascript asynchronous puppeteer