Синхронная печать в Node.js с использованием Puppeteer

1

Я пытаюсь написать синхронный код в Node.js.

function func1(fn) { 
  const puppeteer = require('puppeteer');
  var If = require('If');
  var async = require("async");

  (async () => {


    const browser = await puppeteer.launch({
      headless: false
    });
    const page = await browser.newPage();

    // Open page.
    await page.goto("https://www.google.com/");

  })();
  fn();
}

func1(function(){ 
  console.log('world');
}); 

Сначала я хочу, чтобы страница Google открывалась, и когда я ее закрываю, программа должна печатать: world.

Теги:
google-chrome-devtools
puppeteer
synchronous

2 ответа

0

Вы можете сделать func1 асинхронным, а затем вы можете await свою внутреннюю анонимную асинхронную функцию:

async function func1 (fn) {
  const puppeteer = require('puppeteer');
  var If          = require('If');
  var async       = require('async');

  await (async () => {
    const browser = await puppeteer.launch({headless: false});
    const page    = await browser.newPage();

    await page.goto('https://www.google.com/');
  })();

  fn();
}

func1(function () {
  console.log('world');
});
0

Вызовите fn в fn вызове для отключенного события Puppeteer.
Код ниже работает отлично для меня:

function func1(fn) {
  const puppeteer = require('puppeteer');

  (async () => {
    const browser = await puppeteer.launch({
      headless: false
    });

    const page = await browser.newPage();

    // Open page.
    await page.goto("https://www.google.com/");

    browser.on('disconnected', () => {
      fn();
    });

  })();

}

func1(function(){
  console.log('world');
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню