Node.js Senkron ve Asenkron İşlemler

Yazıda senkron ve asenkron programlamanın ne olduğu ve Node.js ile senkron ve asenkron işlemler hakkında bilgiler yer almaktadır.

Programlama dilleri komutları yukarıdan aşağıya doğru satır satır işleme alır.

Bu işleme senkron programlama veya eşzamanlı programlama denir.

Senkron programlamada komutlar belirli bir süre sonunda bir sonuç üretir.

Ancak her bir komut satırının çalışma süresi aynı değildir.

Bazı komutlar daha uzun çalışma süresine ihtiyaç duyar.

Uzun çalışma süresine ihtiyaç duyan komutlar sıradaki komutları beklemeye alarak kodun çalışma süresini uzatır.

Asenkron programlama veya eşzamansız programlamada komutlar parçalara ayrılarak işlem yapılır.

Yazılan komutlar işlem süresine göre sıraya alınır ve kısa sürede biten komut çalışır.

Daha sonra diğer komutlar çalıştırılır.

Senkron ve asenkron programlamanın anlaşılması için aşağıdaki kodlar faydalı olacaktır.

'use strict';

function islem() {

  uzunBirIslem();

  console.log('Merhaba Dünya');

}

function uzunBirIslem() {

  let i = 0;

  while (i < 10E9) { i++ }

  console.log('İşlem tamamlandı');

}

islem();

Kodlar çalıştırıldığında aşağıdaki gibi bir sonuç verecektir.

node index.js
İşlem tamamlandı
Merhaba Dünya

Kod çıktısında her şey normal görünüyor.

Ancak burada uzunBirIslem fonksiyonu diğer komutları beklemeye aldı ve sıradaki basit Merhaba Dünya yazdırma işlemi diğer işlemin bitmesini bekledi.

JavaScript asenkron işlemleri destekler.

Bundan dolayı Node.js asenkron programlama yapmayı destekler.

'use strict';

function islem() {

  uzunBirIslem();

  console.log('Merhaba Dünya');

}

function uzunBirIslem() {

  setTimeout(function () {

    let i = 0;

    while (i < 10E9) { i++; }

    console.log('İşlem tamamlandı');

  }, 0);
}

islem();

Kodlar çalıştırıldığında aşağıdaki gibi bir sonuç verecektir.

node index.js
Merhaba Dünya
İşlem tamamlandı

Dikkat edilirse ilk olarak daha kısa sürede bitecek olan işlem yapıldıktan sonra diğer işlem yapılmış oldu.

Node.js asenkron programlama çoğu işlemlerde kullanılır.

Node.js fs Modülünü kullanarak dosya okuyalım.

dosya.txt içeriği aşağıdaki gibidir.

Merhaba Node.js

Node.js asenkron dosya okuma kodları

'use strict';

const fs = require('fs');

fs.readFile('dosya.txt', 'utf-8', function (err, data) {

  if (err) throw err;

  console.log(data);

});

console.log('Dosya okundu');

Kodlar çalıştırıldığında aşağıdaki gibi bir sonuç verecektir.

node index.js
Dosya okundu
Merhaba Node.js

Node.js fs Modülü ayrıca senkron dosya okuma metotlarına da sahiptir.

'use strict';

const fs = require('fs');

let data = fs.readFileSync('dosya.txt', 'utf-8');

console.log(data);

console.log('Dosya okundu');

Kodlar çalıştırıldığında aşağıdaki gibi bir sonuç verecektir.

node index.js
Merhaba Node.js
Dosya okundu

Node.js sağladığı asenkron programlama desteğiyle Node.js Nedir? yazısında bahsedilen non-blocking I/O özelliğini sağlar.

Node.js Derslerine buradan ulaşabilirsiniz…

Hayırlı günler dilerim.

Yusuf SEZER

Yusuf SEZER

Computer Engineer who interested about web technologies, algorithms, artificial intelligence and embedded systems; constantly exploring new technologies.


Bunlara'da bakmalısın!