Показать сообщение отдельно
  #1 (permalink)  
Старый 21.05.2018, 11:10
Аватар для Joss
Новичок на форуме
Отправить личное сообщение для Joss Посмотреть профиль Найти все сообщения от Joss
 
Регистрация: 21.05.2018
Сообщений: 2

Ограничение количества вызовов функции
Доброго времени суток.
Недавно начал знакомиться с Node, разумеется, возникли проблемы с асинхронностью...

Необходимо пройти по элементам массива (2 - 3 тысячи) и обработать каждый элемент с помощью внешних скриптов (pars.parsRo/python pdf_adn_json.py).

const {exec} = require('child_process');
var pars = require("./roParser.js");
...
async.each(line, function(element){
                fullPathXrd.length=0;
                fullPathXrd=localPath+element.proc;
                async.waterfall([
                    function(callback){
                        if ((element.action!="D") && (fs.existsSync(fullPathXrd))){
                            if(fullPathXrd.lastIndexOf(".ro")===fullPathXrd.length-3){
                                pars.parsRo(fullPathXrd, callback);
                            }
                            if(fullPathXrd.lastIndexOf(".pdf")===fullPathXrd.length-4){
                                exec('python pdf_adn_json.py '+fullPathXrd, callback);
                            }
                        }else{
                            callback(null, 'fileNotExist');
                        }
                    },
...


При запуске, скрипт вызывает около тысячи процессов (пока машина не будет загружена полностью). Думаю, что это как-то неправильно...
Подскажите, пожалуйста, можно ли ограничить количество запусков внешних функций?
Если можно, то как?

Заранее спасибо.
Ответить с цитированием