Синхронная печать в Node.js с использованием Puppeteer - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь написать синхронный код в 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.

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Вы можете сделать 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 голосов
/ 23 октября 2018

Позвоните вашему 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');
});
...