Callback'ler
Coddy'nin Node.js Journey'sinin Node.js Temelleri bölümünün bir parçası. Ders 18 / 33.
Büyük bir dosyayı okumak zaman alır ve onu bekleyen bir program bu sırada başka hiçbir şey yapmaz.
fs.readFile(path, 'utf8', callback) okumayı başlatır ve hemen geri döner. Dosya yüklendiğinde Node, (err, text) ile geri çağırma işlevini çağırır. Başarılı olduğunda err değeri null, aksi hâlde bir hata olur; bu yüzden önce bunu kontrol et. Metne ihtiyaç duyan her şey geri çağırma işlevinin içine yazılır.
import fs from 'node:fs';
fs.readFile('poem.txt', 'utf8', (err, text) => {
if (err) {
console.log('No poem today');
return;
}
console.log(text.split('\n').length + ' lines');
});
console.log('Asked for the poem');Asked for the poem ilk olarak yazdırılır: readFile satırından sonraki satır, dosya hâlâ yüklenirken çalışır.
Görev
KolayBu derste, Handling Errors dersindeki not aracı dosyaların yerine count.js dosyasında yeni bir geri çağırma sayma örneği açılır. Sağlanan notes.json, notes.js ve store.js dosyaları dahildir; önceki çalışman kendi dersinde kayıtlı kalır.
Büyük bir dosyayı okumak zaman alır. Geri çağırma işleviyle Node bu sırada başka işler yapabilir ve dosya hazır olduğunda kodunu yeniden çağırır. Bunu, bir dosyadaki notları sayan küçük ve ayrı bir program olan count.js içinde dene.
count.jszatenReading...yazdırır ve hangi dosyanın okunacağını bilir:file,node count.jskomutundan sonra yazılan sözcüktür; hiçbir şey yazılmazsanotes.jsonkullanılır.- Bu dosyayı
fs.readFileve bir geri çağırma işleviyle oku. Aşağıdaki her şey geri çağırma işlevinin içinde gerçekleşir. - Okuma başarılı olursa metni
JSON.parseile bir diziye dönüştür. Dizide kaç not bulunduğunu, ardındannotesgelecek şekilde yazdır. Dosyadaki satırları değil, dizideki notları say.notes.jsoniki notla başlar, bu nedenle2 notesyazdırırsın. - Okuma başarısız olursa, yani geri çağırma işlevinin hatası
nulldeğilse, sayı yerineCannot readifadesini ve ardından dosya adını yazdır. - Her iki durumda da son olarak, yine geri çağırma işlevinin içinden
Doneyazdır.
node count.js şunu yazdırır:
Reading...
2 notes
Donenode count.js nothere.json şunu yazdırır:
Reading...
Cannot read nothere.json
DoneDene: Bu ders count.js dosyasını çalıştırır, bu nedenle terminalde $ node count.js görünür. Kutuyu boş bırakıp “Oyna”ya bas; program notes.json dosyasını okur. Ardından kutuya nothere.json yaz ve Enter'a bas; böylece var olmayan bir dosyayı okursun.
Kendin dene
import fs from 'node:fs';
const file = process.argv[2] ?? 'notes.json';
console.log('Reading...');
// Dosyayı fs.readFile ve bir geri çağırma işleviyle oku.
// Notların sayısını, ardından Done yazdır.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Node.js Temelleri bölümündeki tüm dersler
1JavaScript’i Node Üzerinde Çalıştırma
Merhaba, NodeKomutu OkumaKomut Satırı ArgümanlarıKomutlarKendi başına pratik yap: Express playground