Angular'da işlemlerimizi bir sıraya göre yaptırma - Promise kullanımı

Sizin için önemli olan şeyleri daha fazla keşfedin

Angular'da İşlemlerimizi Bir Sıraya Göre Yaptırma - Promise Kullanımı

Angular, modern web uygulamaları geliştirmek için kullanılan popüler bir framework'tür. Birçok durumda, uygulamanızda asenkron işlemler gerçekleştirmeniz gerekecektir. Bu işlemlerin belirli bir sıraya göre yapılması gerektiğinde, JavaScript'in Promise yapısını kullanmak oldukça faydalıdır.

Promise Nedir?

Promise, JavaScript'te asenkron işlemleri yönetmek için kullanılan bir yapıdır. Bir işlemin tamamlanmasını veya başarısız olmasını temsil eder. Promise'lar, özellikle bir dizi asenkron işlemi sırayla gerçekleştirmek istediğinizde kullanışlıdır.

Promise Yapısının Temel Bileşenleri

  • Pending (Beklemede): Promise henüz sonuçlanmadı.
  • Fulfilled (Başarılı): Promise başarılı bir şekilde sonuçlandı ve bir değer döndürdü.
  • Rejected (Reddedildi): Promise başarısız oldu ve bir hata döndürdü.

Promise, then, catch ve finally yöntemleri ile zincirlenebilir. Bu, işlemlerin belirli bir sırayla gerçekleştirilmesini sağlar.

Angular'da Promise Kullanımı

Örnek Senaryo

Bir kullanıcı bilgilerini almak ve ardından bu bilgilerle ilgili ek işlemler yapmak istediğimizi varsayalım. Bu işlemleri sırasıyla gerçekleştirmek için Promise kullanabiliriz.

Adım 1: Promise Tabanlı Servis Oluşturma

Öncelikle, kullanıcı bilgilerini getiren bir servis oluşturacağız. Bu servis bir Promise döndürecek.

import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root',
})
export class UserService {
  constructor() {}

  getUser(): Promise<any> {
    return new Promise((resolve, reject) => {
      // Simüle edilmiş API çağrısı
      setTimeout(() => {
        const user = { id: 1, name: 'John Doe' };
        resolve(user);
      }, 2000);
    });
  }
}

Adım 2: Komponentte Promise Kullanımı

Şimdi, oluşturduğumuz servisi bir komponent içinde kullanacağız. Kullanıcı bilgilerini aldıktan sonra bu bilgilerle ek işlemler gerçekleştireceğiz.

import { Component, OnInit } from '@angular/core';
import { UserService } from './user.service';

@Component({
  selector: 'app-user',
  template: `
    <div *ngIf="user">
      <h2>Kullanıcı Bilgileri</h2>
      <p>ID: {{ user.id }}</p>
      <p>İsim: {{ user.name }}</p>
    </div>
  `,
})
export class UserComponent implements OnInit {
  user: any;

  constructor(private userService: UserService) {}

  ngOnInit() {
    this.userService
      .getUser()
      .then((user) => {
        this.user = user;
        return this.performAdditionalTask(user);
      })
      .then((result) => {
        console.log('Ek işlem sonucu:', result);
      })
      .catch((error) => {
        console.error('Hata:', error);
      });
  }

  performAdditionalTask(user: any): Promise<string> {
    return new Promise((resolve, reject) => {
      // Simüle edilmiş ek işlem
      setTimeout(() => {
        if (user.id) {
          resolve('Ek işlem başarılı!');
        } else {
          reject('Ek işlem başarısız!');
        }
      }, 1000);
    });
  }
}

Promise Zincirleme

Promise'ları zincirleme, işlemleri sırayla gerçekleştirmek için oldukça kullanışlıdır. Yukarıdaki örnekte, kullanıcı bilgilerini aldıktan sonra performAdditionalTask fonksiyonunu çağırarak bu işlemleri sıralı hale getirdik.

Promise Kullanımının Avantajları

  • Kodun Anlaşılabilirliği: Promise'lar, asenkron işlemleri yönetmeyi ve anlamayı kolaylaştırır.
  • Hata Yönetimi: catch yöntemi ile asenkron işlemler sırasında oluşabilecek hataları yönetmek mümkündür.
  • Zincirleme: Promise'lar, işlemleri sırayla gerçekleştirmeyi ve bir işlemin sonucunu bir sonrakine geçirmeyi sağlar.
angular-architecture · GitHub Topics · GitHub
Angular'da işlemlerimizi bir sıraya göre yaptırma - Promise kullanımı

Angular'da işlemlerimizi bir sıraya göre yaptırma - Promise kullanımı, Angular'da asenkron işlemleri bir sıraya göre gerçekleştirmek için Promise yapısı oldukça kullanışlıdır. Promise'lar, asenkron işlemleri yönetmeyi kolaylaştırırken, kodun anlaşılabilirliğini de artırır.