Node.js Turkish Tutorial Part 5

Source
Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. The Node.js package ecosystem, npm, is the largest ecosystem of open source libraries in the world.
Source
Linklerimiz:
Github
Node.js Web Sitesi
| What Will I Learn? | Neler Öğreneceğim? |
|---|---|
| - Node.js Synchronous and Asynchronous Transactions | - Node.js Senkron Ve Asenkron İşlemler |
| - Node.js Synchronous And Asynchronous Operations Usage And Properties | - Node.js Senkron Ve Asenkron İşlemler Kullanımı Ve Özellikleri |
| - What is Callback Function, How to Use it | - Callback Fonksiyonu Nedir,Nasıl Kullanılır |
| Requirements | Gereksinimler |
|---|---|
| - Visual Studio Code (Website) | - Visual Studio Code (Website) |
| - Intermediate Node.js knowledge | - Orta Düzeyde Node.js bilgisi |
| Difficulty | Zorluk |
|---|---|
| - Intermediate | - Orta |
Curriculum (Bu konuyla ilgili tüm içeriklerim)
Part 1: Node.js Turkish Tutorial Part 1
Part 2: Node.js Turkish Tutorial Part 2
Part 3: Node.js Turkish Tutorial Part 3
Part 4: Node.js Turkish Tutorial Part 4
Tutorial Contents (Yazının İçeriği)
Bugün sizlere node.js tutoriallerimizin 5.dersinde senkron ve asenkron işlemler nedir,nasıl kullanılır bunları anlatmaya çalışıcağım.Bu postumu okumadan önce eğer node.js için daha önce ki derslerimi okumadıysanız okumanızı öneririm.2. dersimde visual studio code programını anlatmıştım bundan sonraki eğitimlerimde kodlamalar için o programı kullanıcağım.En önemlisi bu tutorial'imi ilk defa görüyorsanız node.js hakkında pek bilginiz yoksa ilk node.js eğitimimden başlıyarak okumanızı öneririm.
Senkron ve Asenkron İşlemler Nedir ?
Programlama dilleri yazılan komutları yukarıdan aşağıya doğru sırayla işleme alır.Bu işleme senkron programlama yada eşzamanlı programlama adı verilir.Senkron programlamada komutlar belirli bir süreden sonra bir sonuç üretir.
Fakat her komut satırının çalışma süresi farklı olur.Örnek olarak bazı komutlar daha uzun çalışma süresine ihtiyaç duyarlar.Uzun çalışma süresine ihtiyaç duyan komutlar diğer komutları beklemeye alarak kodunuzun çalışma süresini uzatır.Senkron programlamada herşeyi sırayla yapması her işlemin birbirini beklemesi sizin programınızın daha uzun sürede çalışmasına neden olur.
Asenkron programlamada diğer adıyla eşzamansız programlamada ise yazdığınız komutlar parçalara ayrılarak işlem yapılır.Yazdığınız komutlar işlem sırasına göre sıraya alınır.Yani kod akışı işlem durumuna göre olur.
Şimdi senkron programlama için bir örnek verelim
var fs=require("fs");
var dosyaIcerigi=fs.readFileSync(process.argv[2]);
console.log("Program devam ediyor..");
var satirlar=dosyaIcerigi.toString().split("\n");
console.log(satirlar.length);
Bu örneğimizde fs modülünü çağır, dosya içeriğini al, ekrana “Program devam ediyor..” yaz, satırları hesapla, satır sayısını ekrana yaz.Bu işlemleri sırasıyla yapar ve hiçbir işlem birbirinin önüne geçemez.Sırasıyla kodlar birbirini beklemek zorundadır.Bu tip bir programlama metoduna senkron programlama denir.
Asenkron işlemler için modüller içerisinde asenkron fonksiyonlar vardır. Örnek olarak yukarda yazdığımız fs modülü içerisinde kullandığımız "readFileSync" metodunun asenkron versiyonunu kullanmak isterseniz"readFile"yazmanız yeterli olucaktır.Yukarda senkron programlama örneği için gösterdiğim örneği birde asenkron şekilde yazalım.
var fs=require("fs");
var dosyaIcerigi=fs.readFile(process.argv[2]);
console.log("Program devam ediyor..");
var satirlar=dosyaIcerigi.toString().split("\n");
console.log(satirlar.length);

Bu şekilde kodlarımızı asenkron yaptık.Artık 2. satırdaki işlem çalışırken 3,4 ve 5 satırlar onun sonucunu beklemeden devam edicektir.Fakat yukarıda yazdığımız kodlar hata vericektir.Neden derseniz biz 4.satırda biz 2.satırdaki kodun sonucu kullandık.Ama daha 2. satırdaki kodun işi bitmediğinden hata verdi.Bu hatayı çözmemiz için 2.satırdaki kodun işi bittikten sonra 4.satırın çalışmasını sağlamalıyız.Peki biz ikinci satırdaki kodun işinin bittiğini nasıl anlayacağız?
Bittikten sonra yapmamız gerekenleri nerede belirteceğiz? Bunun için Callback fonksiyonunu kullanıcağız.
Callback Fonksiyonu Nedir ?
Asenkson fonksiyonlar içerisindeki işlemler bittikten hemen sonra yapılıcakları belirlediğimiz metotlara callback metotları denir.Callback fonksiyonları sadece kodların bitiminde değil herhangi bir hata sonucunda da kullanılabilir.Bu asenkron metodun yapısıyla alakalı olarak değişebilir.
Node.js içerisindeki callback fonksiyonlarında genel olarak en az iki parametre belirlenir.Bir tanesi hata durumunu kontrol etmek için diğeri ise fonksiyon sonucunu almak için kullanılır.Şimdi callback fonksiyonunun kullanımına geçelim.Yukarıda yazdığımız kodu düzenliyoruz.
var fs=require("fs");
var callback1 = function (hata,dosyaIcerigi) {
if (hata) {
console.log("Bir hata oluştu.")
return;
}
var satirlar=dosyaIcerigi.toString().split("\n");
console.log(satirlar.length);
}
fs.readFile(process.argv[2],callback1);
console.log("Program devam ediyor..");
Kodlarımızda callback1 adında bir fonksiyon oluşturmuş olduk.Bu fonksiyon iki tane parametre alıyor.Bu fonksiyonu ise readFile fonksiyonuna parametre olarak verdik.readFile işlemlerini yaptıktan sonra bizim vermiş olduğumuz callback1 fonksiyonunu ilk parametre olarak varsa bir hatayı, ikinci parametre olarak da herhangi bir hata oluşmamışsa eğer sonucu parametre olarak verecek ve çalıştıracak.
Kodumuza genel olarak bir bakıcak olursak ilk satırda fs modülünü çağırdık.İkinci satırda parametre olarak yolladığımız dosyanın içeriğini okumaya başladık.İkinci satırdaki kodumuz devam ederken 3.satırda ekranımıza “Program devam ediyor..”yazdırdık.Diğer bir yandan 2.satırdaki kodumuz ne zaman biterse callback1 fonksiyonunu çağırıcak.Callback1 fonksiyonunu çağırdında ilk önce içerisinde herhangi bir hata olup olmadığını kontrol ettik.Varsa herhangi bir hata ekranımıza “Bir hata oluştu.”yazdırdırdık ve programımızı bitirdik.Eğer bir hata yoksa devam edicek ve dosyaIcerigi degiskenini string ifadeye çevirip satırlarına ayırıcak.Daha sonrada satır sayısını ekrana yazdırıcak.Genel olarak programımız bu şekilde çalışıyor.Kafanızın karışmaması açısından bu programı şu şekilde de yazabiliriz.
var fs = require("fs");
fs.readFile(process.argv[2], function (hata, dosyaIcerigi) {
if (hata) {
console.log("Bir hata oluştu.")
return;
}
var satirlar = dosyaIcerigi.toString().split("\n");
console.log(satirlar.length);
});
console.log("Program devam ediyor..");
Kodlarımızı anlatıcak olursak önceki kod ile bu kod arasında hiçbir fark yok ikiside aynı işlevi görmekte.Sadece yazım şekli farklı.İlk kodlamada callback fonksiyonunu önce bir değişkene atayıp daha sonra readFile fonksiyonuna ilettik.İkinci kodlama ise direkt içerisine yazdık.Hangisi sizin daha kolayınıza geliyorsa onu kullanabilirsiniz.İksinin arasındaki farkı daha iyi anlamak isterseniz yan yana koyup inceliyebilirsiniz.
Node.js için Senkron ve Asenkron İşlemler hakkında anlatıcaklarım bu kadardı iyi günler dilerim.Sonraki eğitimlerimizde görüşmek üzere.
Posted on Utopian.io - Rewarding Open Source Contributors



Your contribution cannot be approved because it does not follow the Utopian Rules, and is considered as plagiarism. Plagiarism is not allowed on Utopian, and posts that engage in plagiarism will be flagged and hidden forever.
Plagiarism here
You can contact us on Discord.
[utopian-moderator]