In Node.js la lettura e la scrittura dei file non dovrebbero mai bloccare l'event loop.
I metodi sincroni per la lettura e la scrittura dei file del modulo fs esistono unicamente per venire incontro a due requisiti specifici:
- I dati da leggere e da scrivere sono di dimensioni modeste e tali dimensioni sono stabili e fisse nel tempo.
- Un metodo asincrono non consentirebbe il corretto funzionamento della feature scelta.
Ad esempio:
'use strict';
const express = require('express');
const https = require('https');
const fs = require('fs');
const app = express();
const SSLOptions = {
key: fs.readFileSync('privkey.pem'),
cert: fs.readFileSync('fullchain.pem')
};
https.createServer(SSLOptions, app).listen(8080);
In questo caso è richiesta una stringa sia per la chiave privata che per il certificato SSL. Tali file sono di modeste dimensioni e tali dimensioni non cambiano nel tempo, ossia sono predeterminate. Al contrario se dovessimo leggere il contenuto di un'immagine dovremmo usare il metodo asincrono o gli stream, poiché non conosciamo in anticipo le dimensioni del file e tali dimensioni sono variabili.