Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.09.2017, 20:23
Аватар для kristow
Аспирант
Отправить личное сообщение для kristow Посмотреть профиль Найти все сообщения от kristow
 
Регистрация: 26.02.2015
Сообщений: 49

Многозадачность с Nightmare js
Я по примерам написал функцию, в которой Nightmare парсит страницу.
При отладке я запускал функцию с одним параметром, и все работало.

Когда я делаю массив с данными и перебором запускаю функцию парсера, то мне кидает ошибку:
Код:
(node:3056) Warning: Possible EventEmitter memory leak detected. 11 close listen
ers added. Use emitter.setMaxListeners() to increase limit
const Nightmare = require('nightmare');
const dream = Nightmare({show: 'true'});
 
const EventEmitter = require('events');
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
 
myEmitter.on('error', (err) => {
  console.log('whoops! there was an error');
});
 
myEmitter.on('db_connect', function(){
  dbconn.connect(function(err){
      if(err){
        console.log('Database connection error');
      }else{
        console.log('Database connection successful');
      }
    });
});
 
dbconn.query('SELECT `id`, `operator`, `telefon`, `password`, `data` FROM `base` LIMIT 2', function (error, results, fields) {
    if (error) throw error;
    myEmitter.emit('db_connect');
    for (i = 0; i < results.length; i++) { 
        myEmitter.emit('beeline', results[i].id, results[i].telefon, results[i].password);
    }
});
 
myEmitter.on('beeline', function(base_id, login, pass){
    console.log('<=====RUN balance: '+login+'=====>');
    dream.goto('https://my.beeline.ru')
      .insert('input[name="loginFormB2C:loginForm:login"]', login)
      .insert('input[name="loginFormB2C:loginForm:passwordPwd"]', pass)
      .insert('input[name="loginFormB2C:loginForm:password"]', pass)
      .click('a[onclick="togglePasswordField(this)"]')
      .wait(5000)
      .end()
      .catch((error) => {
        console.error('Search failed:', error);
      });
  
});

при таком коде ошибки нет, но и Nightmare не стартует, хотя лог записи из функции пишутся....
Подскажите как правильно запустить многопоточность в моем случае? Или если Nightmare не работает с многопоточностью, то как без нее по очереди выполнять функции?
Ответить с цитированием
  #2 (permalink)  
Старый 15.09.2017, 12:34
Аватар для kristow
Аспирант
Отправить личное сообщение для kristow Посмотреть профиль Найти все сообщения от kristow
 
Регистрация: 26.02.2015
Сообщений: 49

Если интересно, решил проблему запихнув const dream = Nightmare({show: 'true'}); в функции... Чтобы был не один экземпляр... И тогда все заработало как и хотел
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Диалог между HTML и внешним JS в контексте расширения GoogleChrome ev1lart Events/DOM/Window 0 26.04.2017 19:25
JS <-> Server Js. Severtain Общие вопросы Javascript 1 05.11.2011 15:36
JS Coaching для стартапа OlgaAyva Работа 12 27.09.2011 22:18
Картинка обрабатывается js 4yBaK Общие вопросы Javascript 10 11.09.2011 09:28
Срочно JS developer okp Работа 13 23.08.2011 16:16