Ответы пользователя по тегу Node.js
  • Как на nighmarejs обойти несколько страниц и сохранить их в pdf?

    @trubel
    ошибка в том что вы забыли что nodejs асинхронен и nightmare не ждет пока файл сохранится, сразу переходит на другой адрес, а с таким кодом и правда нетрудно сойти с ума :)
    на похожей задаче я использовал async/await:
    var Nightmare = require('nightmare');
    var browser = Nightmare();
    
    async function login() {
    	// заходим
    }
    
    async function getLinks() {
    	var result = [];
    	// вытаскиваем ссылки
    	await browser
    		.goto('url')
    		...
    		.then(function(data){
    			result = data.slice();
    		});
    	return result
    }
    
    async function savePDF(url) {
    	// сохраняем
    	await browser
    		.goto(url)
    		.pdf(...);
    }
    
    async function run() {
    	await login();
    	var links = await getLinks();
    	for (var i=0; i<links .length: i++) {
    		await savePDF(links[i]);
    	}
    }


    await дает сигнал движку чтобы он ждал окончания выполнения и не двигался дальше.
    async указывает что функция асинхронная, и только функции с async могут использовать await
    Ответ написан
    3 комментария