Bir kurs izlerken Node.js'de senkron problemine değinildi, sorun aşağıda.
JavaScript:
const fs = require("fs");
const data = fs.readFileSync("./hello.txt","utf-8");
console.log(data);
Bu kodda eğer bir hata olursa(örnek dosya ismi yanlış olursa ya da verilen parametreler yanlış olursa) kod senkron çalışacağı için hiçbir çıktı almayız, ve bu da kodların birbirlerini block etmesi mi demek?
Asenkron çalıştığında ise şöyle mi yazılıyor, içine ek olarak bir callback function mu alıyor?
Böyle olduğunda ise paranetrelerde bir hata dahi olsa kodlar birbirlerini block etmeden çalışıyor, dosya ismi yanlış olunca undefined diyor. Doğru anlamış mıyım yoksa extra bilinmesi gereken ya da yanlış olan bir şey var mı?
Doğru anlamışsın. Birinci kod blocking bir kod ve eğer ola ki fs.readFileSync herhangi bir hatadan ötürü çalışamazsa program tümüyle durur, sistem dosyanın okunmasını bekler. İkinci kod non-blocking bir kod ve eğer ola ki dosya herhangi bir hata sebebiyle açılmadıysa callback fonksiyonda tanımladığın "err" değişkenine hata kodunu atar fakat kod satırı atlanarak program çalışmaya devam eder.