Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Ordine di esecuzione non rispettato Node.js

    Salve a tutti, sto provando a scrivere uno script in Node.js che possa prendere dati da un file di testo, analizzarli e modificarli a piacimento.
    Purtroppo però non capisco perché l'esecuzione dei comandi non avviene proprio in ordine cronologico e non capisco a cosa sia dovuto.

    Ho usato diversi console.log() al fine di far capire cosa intendo, di seguito la prima parte del codice
    codice:
    console.log("+++");
        console.log("0")
        var oldData = getOldData("pattern");
        console.log("Debug#2: " + oldData);
        // ...
        // Modifica dei dati
        // ...
        console.log("6")
        console.log("---");

    Funzione getOldData()

    codice:
    function getOldData(pattern) {
        console.log("1")
        var matchDataOfFunction = []
        var fs = require('fs');
        try {
            fileData = fs.readFileSync(path, 'utf8');
            regex = new RegExp(pattern + '\\s\\{'); 
            match = fileData.match(regex);
            console.log("2")
            if (match != null) { // Exist
                const lineReader = require('line-reader');
                lineReader.eachLine(path, function (line) {
                    console.log("3")
                    if (line.includes(pattern)) {
                        console.log("4")
                        regexp = /\{(\w+)\}/g;
                        matchDataOfFunction = [...line.match(regexp)];
                        console.log("Debug#C: " + matchDataOfFunction);
                        return matchDataOfFunction;
                    }
                });
            }
    
        } catch (err) { console.log(err) }
        console.log("5")
        console.log("Debug#B: " + matchDataOfFunction)
        return matchDataOfFunction;
    }
    Secondo quanto scritto il risultato dovrebbe essere così:
    codice:
    +++
    0
    1
    2
    3
    3
    3
    4
    Debug#C: <dati>
    5
    Debug#B: <dati>
    Debug#2: <dati>
    6
    ---
    Ma l'output che ottengo è questo qua:
    codice:
    +++
    0
    1
    2
    5
    Debug#B: <dati>
    Debug#2: <dati>
    6
    ---
    3
    3
    3
    4
    Debug#C: <dati>
    Qualcuno può aiutarmi a capire che succede?
    asd il corrispondente italiano di lol (lot of laught) non ha un significato è usato nei giochi di ruolo online perche la destra è impegnata nel movimento del personaggio

  2. #2
    Ho risolto sostituendo nella funzione getOldData() la porzione di codice
    codice:
    const lineReader = require('line-reader');
                lineReader.eachLine(path, function (line) {
                    console.log("3")
                    if (line.includes(pattern)) {
                        console.log("4")
                        regexp = /\{(\w+)\}/g;
                        matchDataOfFunction = [...line.match(regexp)];
                        console.log("Debug#C: " + matchDataOfFunction);
                        return matchDataOfFunction;
                    }
                });
    che utilizzavo per leggere linea per linea un file di testo, con la seguente porzione di codice
    codice:
    const lineReader = require('read-each-line-sync');
    lineReader(path, 'utf8', function(line) {                               
    if (line.includes(pattern)) {                                         
    regexp = /\{(\w+)\}/g;                     
    matchDataOfFunction = [...line.match(regexp)];                                         
    return matchDataOfFunction;                 
    }               
    })
    asd il corrispondente italiano di lol (lot of laught) non ha un significato è usato nei giochi di ruolo online perche la destra è impegnata nel movimento del personaggio

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Come detto in questa sede, l'ordine è corretto: devi studiare la programmazione asincrona con JavaScript e NodeJS.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.