Viac na
Získanie údajov z fs.readFile
var content;
fs.readFile('./Index.html', function read(err, data) {
if (err) {
throw err;
}
content = data;
});
console.log(content);
Logy nedefinované
, prečo?
275
3
Aby som upresnil to, čo povedal @Raynos, funkcia, ktorú ste definovali, je asynchrónne spätné volanie. Nevykoná sa hneď, ale až po dokončení načítania súboru. Keď zavoláte readFile, riadenie sa okamžite vráti a vykoná sa ďalší riadok kódu. Takže keď voláte console.log, vaše spätné volanie ešte nebolo vyvolané a tento obsah ešte nebol nastavený. Vitajte v asynchrónnom programovaní.
Príklad prístupov
Alebo ešte lepšie, ako ukazuje Raynosov príklad, zabaľte volanie do funkcie a odovzdajte vlastné spätné volania. (Zrejme je to lepší postup.) Myslím, že ak si zvyknete svoje asynchrónne volania zabaliť do funkcie, ktorá prijíma spätné volanie, ušetríte si veľa problémov a neprehľadného kódu.
V skutočnosti na to existuje funkcia Synchronous:
http://nodejs.org/api/fs.html#fs_fs_readfilesync_filename_encoding.
Asynchrónna
fs.readFile(názov súboru, [kódovanie], [spätné volanie])
Asynchrónne prečíta celý obsah súboru. Príklad:
Spätnému volaniu sa odovzdajú dva argumenty (err, data), kde data je obsah súboru._
Ak nie je zadané žiadne kódovanie, potom sa vráti surová vyrovnávacia pamäť.
SYNCHRONOUS
fs.readFileSync(názov súboru, [kódovanie])
Synchrónna verzia fs.readFile. Vracia obsah súboru s názvom súboru.
Ak je zadané kódovanie, potom táto funkcia vráti reťazec. V opačnom prípade vráti vyrovnávaciu pamäť.