Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何全局创建异步/等待_Javascript_Async Await_Puppeteer - Fatal编程技术网

Javascript 如何全局创建异步/等待

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

我想全局使用一个变量,它有一个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', 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);