Async/Await ile Node.js Uygulamaları Geliştirme

  • 7
  • (1)
  • (5)
  • 26 Oca 2025

Async/Await, Node.js uygulamalarında asenkron işlemleri daha okunabilir ve yönetilebilir hale getiren modern bir JavaScript yapısıdır. Promises üzerinde çalışan bu yapı, kodun senkron bir şekilde yazılmasını sağlar ve "callback hell" gibi karmaşıklıkları ortadan kaldırır. Bu makalede, async/await kullanarak Node.js uygulamalarının nasıl geliştirilebileceğini örneklerle inceleyeceğiz.


Async ve Await Nedir?

async anahtar kelimesi, bir fonksiyonu asenkron hale getirir ve bu fonksiyonun bir Promise döndürmesini sağlar.

await ifadesi, bir Promise'in çözülmesini (resolve) veya reddedilmesini (reject) bekler ve kodun bu sırada durmasını sağlar.

Basit Örnek


const veriOku = () => {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('Veri başarıyla okundu');
        }, 2000);
    });
};

const asyncFunction = async () => {
    console.log('Veri okunuyor...');
    const sonuc = await veriOku();
    console.log(sonuc);
};

asyncFunction();

Çıktı:

Veri okunuyor...
 Veri başarıyla okundu

Async/Await'in Avantajları

Okunabilirlik: Kodun daha senkron bir şekilde yazılmasını sağlar.

Hata Yönetimi: try-catch blokları ile hataların yönetimi kolaydır.

Promise Zincirlerinden Kurtulma: Async/Await, karmaşık promise zincirlerini sadeleştirir.


Node.js Uygulama Örnekleri

Aşağıda, fs/promises modülü kullanılarak dosya okuma ve yazma işlemleri async/await ile gerçekleştirilmiştir:


const fs = require('fs/promises');

const dosyaIslemleri = async () => {
    try {
        await fs.writeFile('dosya.txt', 'Async/Await Örneği...');
        console.log('Dosya yazıldı');

        const veri = await fs.readFile('dosya.txt', 'utf8');
        console.log('Dosya içeriği:', veri);
    } catch (error) {
        console.error('Hata oluştu:', error);
    }
};

dosyaIslemleri();

Çıktı:

Dosya yazıldı
 Dosya içeriği: Async/Await Örneği...

Bir API'den veri almak için async/await kullanımı aşağıdaki gibidir:


const fetch = require('node-fetch');

const kullaniciGetir = async () => {
    try {
        const response = await fetch('https://**örnek link**/users');
        if (!response.ok) {
            throw new Error('API isteği başarısız oldu');
        }
        const kullanicilar = await response.json();
        console.log('Kullanıcılar:', kullanicilar);
    } catch (error) {
        console.error('Hata:', error);
    }
};

kullaniciGetir();

Çıktı:

Kullanıcılar: [... kullanıcı verileri ...]

MongoDB kullanarak veri ekleme, okuma ve silme işlemleri için async/await şu şekilde kullanılabilir:


const { MongoClient } = require('mongodb');

const uri = 'mongodb://localhost:27017';
const client = new MongoClient(uri);

const veritabaniIslemleri = async () => {
    try {
        await client.connect();
        console.log('MongoDB bağlantısı başarılı');

        const db = client.db('ornekDB');
        const koleksiyon = db.collection('ornekKoleksiyon');

        // Veri ekleme
        const yeniVeri = { ad: 'Telefon', fiyat: 15000 };
        await koleksiyon.insertOne(yeniVeri);
        console.log('Veri eklendi:', yeniVeri);

        // Veri okuma
        const veriler = await koleksiyon.find().toArray();
        console.log('Veriler:', veriler);

        // Veri silme
        await koleksiyon.deleteOne({ ad: 'Telefon' });
        console.log('Veri silindi');
    } catch (error) {
        console.error('Hata oluştu:', error);
    } finally {
        await client.close();
    }
};

veritabaniIslemleri();

Çıktı:

MongoDB bağlantısı başarılı
 Veri eklendi: { ad: 'Telefon', fiyat: 15000 }
 Veriler: [...]
 Veri silindi

Hata Yönetimi

Async/Await kullanırken hataları yönetmek için try-catch blokları kullanılır. Bu yöntem, hataları kolayca yakalamayı ve ele almayı sağlar.


const hataYonetimi = async () => {
    try {
        const sonuc = await Promise.reject('Bir hata oluştu');
        console.log(sonuc);
    } catch (error) {
        console.error('Hata yakalandı:', error);
    }
};

hataYonetimi();

Çıktı:

Hata yakalandı: Bir hata oluştu

Async/Await, Node.js uygulamalarında asenkron işlemleri daha okunabilir ve kolay yönetilebilir hale getirir. Dosya işlemleri, API çağrıları ve veritabanı etkileşimleri gibi birçok senaryoda yaygın olarak kullanılır. Kodunuzu modern JavaScript standartlarına göre yazmak ve hata yönetimini kolaylaştırmak için async/await yapısını tercih edebilirsiniz.

İlişkili İçerikler

Node.js gibi platformlarda asenkron işlemler uygulamaların performansını artırmak için kritik bir rol oynar.

Worker Threads modülü, CPU yoğunluklu işlemleri ana iş parçacığını (event loop) bloklamadan yürütmek için kullanılan bir Node.js özelliğidir.

Hata yönetimi (Error Handling) ve hata ayıklama (Debugging), yazılım geliştirmenin önemli bileşenlerindendir. Node.js gibi dinamik ve asenkron çalışan bir ortamda, hataları yakalamak ve yönetmek uygulamanın güvenilirliğini artırır.

Paylaşın
Etiket Bulutu