fs.readFile dosyasından veri alın
var content;
fs.readFile('./Index.html', function read(err, data) {
if (err) {
throw err;
}
content = data;
});
console.log(content);
Loglar tanımlanmamış
, neden?
275
3
Raynos'un söylediklerini detaylandırmak gerekirse, tanımladığınız fonksiyon asenkron bir geri çağırmadır. Hemen çalışmaz, bunun yerine dosya yükleme işlemi tamamlandığında çalışır. ReadFile'ı çağırdığınızda, kontrol hemen geri döndürülür ve bir sonraki kod satırı yürütülür. Yani console.log'u çağırdığınızda, geri aramanız henüz çağrılmamıştır ve bu içerik henüz ayarlanmamıştır. Asenkron programlamaya hoş geldiniz.
Örnek yaklaşımlar
Ya da daha iyisi, Raynos örneğinin gösterdiği gibi, çağrınızı bir fonksiyona sarın ve kendi geri aramalarınızı iletin. (Görünüşe göre bu daha iyi bir uygulama) Bence asenkron çağrılarınızı geri çağrı alan bir fonksiyona sarma alışkanlığı edinmek sizi çok fazla sorundan ve dağınık koddan kurtaracaktır.
Aslında bunun için bir Eşzamanlı işlev vardır:
http://nodejs.org/api/fs.html#fs_fs_readfilesync_filename_encoding
Asenkron
fs.readFile(filename, [encoding], [callback])
Eşzamanlı olarak bir dosyanın tüm içeriğini okur. Örnek:
Geri çağrıya iki argüman (err, data) aktarılır, burada data dosyanın içeriğidir._
Kodlama belirtilmezse, ham tampon döndürülür.
SYNCHRONOUS
fs.readFileSync(filename, [encoding])
Fs.readFile'ın eşzamanlı sürümü. dosyaadı. adlı dosyanın içeriğini döndürür.
Eğer kodlama belirtilirse, bu fonksiyon bir dize döndürür. Aksi takdirde bir tampon döndürür.