Javascript 如何全局创建异步/等待
我想全局使用一个变量,它有一个wait,如下所示:Javascript 如何全局创建异步/等待,javascript,async-await,puppeteer,Javascript,Async Await,Puppeteer,我想全局使用一个变量,它有一个wait,如下所示: (async () => { const browser = await puppeteer.launch({headless: false}) const page = await browser.newPage(); })() 然后在我的所有功能上使用它: async function login() { await page.goto(urls.login); await page.type('#username
(async () => {
const browser = await puppeteer.launch({headless: false})
const page = await browser.newPage();
})()
然后在我的所有功能上使用它:
async function login() {
await page.goto(urls.login);
await page.type('#username', user);
await page.type('#password', pw);
page.click('[type="submit"]');
await page.waitForNavigation();
}
运行它时,会出现以下错误:
ReferenceError:未定义页面
有一些方法可以让它工作吗?解决方案如下:
将承诺存储在全局变量中:
const pagePromise = (async () => {
const browser = await puppeteer.launch({headless: false})
return browser.newPage();
})();
然后你以后可以像这样使用它
async function login(page) {
await page.goto(urls.login);
await page.type('#username', user);
await page.type('#password', pw);
page.click('[type="submit"]');
await page.waitForNavigation();
}
pagePromise.then(login).catch(console.error);
或
login
功能是否已退出iLife<代码>(()=>{})(是的,我在这里找到了解决方案:
async function login(page) {
await page.goto(urls.login);
await page.type('#username', user);
await page.type('#password', pw);
page.click('[type="submit"]');
await page.waitForNavigation();
}
pagePromise.then(login).catch(console.error);
async function login() {
const page = await pagePromise;
await page.goto(urls.login);
await page.type('#username', user);
await page.type('#password', pw);
page.click('[type="submit"]');
await page.waitForNavigation();
}
login().catch(console.error);