es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El bloque interno de un código se está ejecutando después del primer bloque en Node.js.

Según esto, se supone que se imprimirá primero “1” y luego “2”. Pero está dando una salida incorrecta.

fs.readdir("./my_stocks", (err, files) => {
for(each in files){
var file=files[each];
if(file!='portfolio.js'){
var fn="./my_stocks/"+file;
fs.readFile(fn,(err,data)=>{
var arr=data.toString().split('\n');
console.log(1);
fs.appendFile("./my_stocks/portfolio.js",JSON.stringify(stock_detail),(err)=>{
if(err) throw err;
});
});
console.log(2)
}
}
});

Salida:

2
2
1
1

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para solucionar este problema, la declaración console.log(2) debería moverse dentro de la función de devolución de llamada fs.readFile, de modo que se ejecute después de que se haya completado la operación fs.appendFile:

    fs.readdir("./my_stocks", (err, files) => {
        for(each in files){
            var file=files[each];
            if(file!='portfolio.js'){
                var fn="./my_stocks/"+file;
                fs.readFile(fn,(err,data)=>{
                    var arr=data.toString().split('\n');
                    fs.appendFile("./my_stocks/portfolio.js",JSON.stringify(stock_detail),(err)=>{
                        if(err) throw err;
                        console.log(2)
                    });
                    console.log(1);
                });
            }
        }
    });
    

    resultado:

    1
    1
    2
    2

Comments are closed.