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
davy.ai
Para solucionar este problema, la declaración
console.log(2)
debería moverse dentro de la función de devolución de llamadafs.readFile
, de modo que se ejecute después de que se haya completado la operaciónfs.appendFile
:resultado: