No tak ještě takto. Opět asi nepochopení té asynchronity :(
var urls = new Map();
urls.set('cz', 'http://www.data.net/xml/cz.xml');
urls.set('sk', 'http://www.data.net/xml/sk.xml');
// ...
res.writeHead(200, {'Content-Type': 'text/html; charset=UTF-8'});
var file = '';
for (let [url_key, url] of urls) {
file = '';
http.get(url, function(res0) {
var response_data = '';
res0.setEncoding('utf8');
res0.on('data', function(chunk) {
response_data += chunk;
});
res0.on('end', function() {
parser.parseString(response_data, function(err, result) {
if (err) {
console.log('Got error: ' + err.message);
res.write('Got error: ' + err.message);
} else {
console.log('Loading XML done.');
puppeteer.launch({
// ... plnění proměnné file += 'nějaký kus textu';
Tady mi dochází několika věcem...
Asynchronně se ten první cyklus vyvolá pro všechny položky pole URLS... Což by úplně nevadilo kdyby... ...mi to nezačalo vyvolávat výjimky na maxListeners, kterou mám nastavenu na 100. teda pokud to chápu...
A také to, že když níže plním v cyklech co jsem tu řešil dříve proměnou "file", tak mi to každé to spuštění v tom prvním cyklu plní tu samou proměnnou, takže pak mám v datech binec...
Takže bych buď raději:
- zajistil synchro - čas nehraje roli, bude to něco co bude běžet cronem na pozadí a generovat právě cache soubory
- nebo nějak zajistit, že se ty "vllákna" spustí třeba jen 3 a nebude se mixovat ta proměnná file...
Prosím o nějaký nákop...