Menu
CoddyTech

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.

challenge icon

Görev

Kolay

Bu 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.

  1. count.js zaten Reading... yazdırır ve hangi dosyanın okunacağını bilir: file, node count.js komutundan sonra yazılan sözcüktür; hiçbir şey yazılmazsa notes.json kullanılır.
  2. Bu dosyayı fs.readFile ve bir geri çağırma işleviyle oku. Aşağıdaki her şey geri çağırma işlevinin içinde gerçekleşir.
  3. Okuma başarılı olursa metni JSON.parse ile bir diziye dönüştür. Dizide kaç not bulunduğunu, ardından notes gelecek şekilde yazdır. Dosyadaki satırları değil, dizideki notları say. notes.json iki notla başlar, bu nedenle 2 notes yazdırırsın.
  4. Okuma başarısız olursa, yani geri çağırma işlevinin hatası null değilse, sayı yerine Cannot read ifadesini ve ardından dosya adını yazdır.
  5. Her iki durumda da son olarak, yine geri çağırma işlevinin içinden Done yazdır.

node count.js şunu yazdırır:

Reading...
2 notes
Done

node count.js nothere.json şunu yazdırır:

Reading...
Cannot read nothere.json
Done

Dene: 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.
quiz iconKendini test et

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

Kendi başına pratik yap: Express playground