Bienvenido a proyecto on line, aquí vas a encontrar la resolución de lo que buscabas.
Solución:
fs.readFile recibe una devolución de llamada que llama a response.send como ha mostrado: bien. Si simplemente reemplaza eso con fs.readFileSync, debe tener en cuenta que no recibe una devolución de llamada, por lo que nunca se llamará a su devolución de llamada que llama a response.send y, por lo tanto, la respuesta nunca terminará y se agotará el tiempo de espera.
Debe mostrar su código readFileSync si no está simplemente reemplazando readFile con readFileSync.
Además, para que sepas, deberías Nunca llame a readFileSync en un nodo express/servidor web, ya que vinculará el ciclo de subproceso único mientras se realiza la E/S. Desea que el bucle del nodo procese otras solicitudes hasta que se complete la E/S y se pueda ejecutar su código de manejo de devolución de llamada.
'use strict'
var fs = require("fs");
/***
* implementation of readFileSync
*/
var data = fs.readFileSync('input.txt');
console.log(data.toString());
console.log("Program Ended");
/***
* implementation of readFile
*/
fs.readFile('input.txt', function (err, data)
if (err) return console.error(err);
console.log(data.toString());
);
console.log("Program Ended");
Para una mejor comprensión, ejecute el código anterior y compare los resultados.
readFileSync()
es síncrono y bloquea la ejecución hasta que finaliza. Estos devuelven sus resultados como valores de retorno.
readFile()
son asincrónicos y regresan inmediatamente mientras funcionan en segundo plano. Pasa una función de devolución de llamada que se llama cuando terminan. Tomemos un ejemplo para no bloquear.
el siguiente método lee un archivo como una forma sin bloqueo
var fs = require('fs');
fs.readFile(filename, "utf8", function(err, data)
if (err) throw err;
console.log(data);
);
A continuación se lee un archivo de forma bloqueada o síncrona.
var data = fs.readFileSync(filename);
LOL… Si no quieres
readFileSync()
como forma de bloqueo, luego tome referencia del siguiente código. (Nativo)
var fs = require('fs');
function readFileAsSync()
new Promise((resolve, reject)=>
fs.readFile(filename, "utf8", function(err, data)
if (err) throw err;
resolve(data);
);
);
async function callRead()
let data = await readFileAsSync();
console.log(data);
callRead();
es malo detrás de escena
readFileSync()
funciona igual que la base anterior (promesa).
Recuerda que puedes dar recomendación a esta sección si te fue de ayuda.