Məzmuna keçin
  • Kateqoriyalar
  • Ən yeni
  • Teqlər
  • Populyar
Yığmaq
Brend loqosu
  1. Əsas səhifə
  2. Front-end
  3. JavaScript
  4. JavaScript-də Promis

JavaScript-də Promis

Planlaşdırılıb Sabitlənib Kilidlənib Köçürülüb JavaScript
promiseasinxronthencatchfinally
1 Yazı 1 Yazarlar 38 Baxış
  • Ən köhnədən yeniyə
  • Ən yenidən köhnəyə
  • Ən çox səs
Cavab ver
  • Mövzu olaraq cavablandır
🔑 Daxil ol
Bu mövzu silindi. Yalnız mövzu idarəçiliyi imtiyazlarına malik olan istifadəçilər onu görə bilər.
  • Elvin HuseynovE Oflayn
    Elvin HuseynovE Oflayn
    Elvin Huseynov
    üzərində yazmışdı sonuncu dəfə tərəfindən redaktə edilib
    #1

    Promis (Promise) — JavaScript-də asinxron kodun yazılması və işlənməsi üçün istifadə olunan xüsusi bir obyektdir. Asinxron funksiyalar, nəticə olaraq bir Promise obyekti qaytarır. Bu obyektin içində, ya artıq icra olunmuş, ya da gələcəkdə icra olunacaq bir əməliyyatın nəticəsi saxlanılır.

    Promis üç əsas vəziyyətdə ola bilər:

    1. Pending (Gözləyən) — Başlanğıc vəziyyəti, əməliyyat başlanıb.
    2. Fulfilled (Tamamlanmış) — Nəticə əldə edilib.
    3. Rejected (İmtina edilmiş) — Xəta baş verib.

    Promisin vəziyyəti yalnız bir dəfə dəyişə bilər; yəni, pending vəziyyətindən yalnız ya fulfilled, ya da rejected vəziyyətinə keçə bilər.

    promise.png


    Promis necə yaradılır?

    Promis, konstruktor vasitəsilə yaradılır. Konstruktor daxilində bir “executor” funksiyası verilir. Bu funksiya, promis yaradıldıqdan dərhal sonra işə düşür və asinxron əməliyyatı yerinə yetirir. Hədəf, əməliyyatın nəticəsini fulfilled (uğurlu) və ya rejected (xəta) vəziyyətinə gətirməkdir.

    const promise = new Promise(function (resolve, reject) {
      // Asinxron əməliyyat:
      navigator.geolocation.getCurrentPosition(function (data) {
        resolve(data);  // Tamamlanmış nəticə
      });
    });
    
    const errorPromise = new Promise(function (resolve, reject) {
      reject(new Error('Xəta'));  // Xəta baş verdi
    });
    
    • resolve: Promisi fulfilled vəziyyətinə gətirən funksiya.
    • reject: Promisi rejected vəziyyətinə gətirən funksiya.

    Promis ilə işləmə

    then(), catch() və finally() metodları, promisin vəziyyətinin dəyişməsi ilə əlaqəli kodu icra etmək üçün istifadə olunur.

    • then() metodu asinxron əməliyyatın uğurlu nəticəsi ilə işləmək üçün istifadə edilir.
    fetch(`https://swapi.dev/api/films/${id}/`)
      .then(function (movies) {
        renderList(movies);
      })
    
    • catch() metodu əməliyyat zamanı xətalarla işləmək üçün istifadə edilir.
    fetch(`https://swapi.dev/api/films/${id}/`)
      .catch(function (error) {
        renderErrorMessage(error);
      });
    
    • finally() metodu isə asinxron əməliyyatın tamamlanmasından sonra, istənilən halda işləyəcək kodu icra edir.
    let isLoading = true;
    fetch(`https://swapi.dev/api/films/${id}/`)
      .finally(function () {
        isLoading = false;
      });
    

    Metodların zəncirlənməsi

    then(), catch() və finally() metodları zəncirlənərək istifadə edilə bilər, beləliklə asinxron əməliyyatların ardıcıl yerinə yetirilməsi təmin edilir.

    fetch(`https://swapi.dev/api/films/${id}/`)
      .then(function (movies) {
        renderList(movies);
      })
      .catch(function (err) {
        renderErrorMessage(err);
      })
      .finally(function () {
        isLoading = false;
      });
    

    Zəncirlənmiş metodlar asinxron əməliyyatların nəticələrinə uyğun hərəkət etməyə imkan verir, məsələn, bir filmi göstərmək və sonra onun əsas qəhrəmanını əldə etmək.


    Digər Promis metodları

    Bəzən mövcud bir nəticəni Promis-ə çevirmək lazımdır. Bu zaman Promise.resolve() metodundan istifadə olunur.

    const happyDog = Promise.resolve('🐶');
    happyDog.then(function (dog) {
      console.log(dog); // 🐶
    });
    

    Promise.reject() metodu, bir xətanı Promis obyektinə çevirmək üçün istifadə olunur.

    const sadDog = Promise.reject('🐶');
    sadDog.catch(function (dog) {
      console.log(dog); // 🐶
    })
      .then(function () {
        console.log('ok');
      });
    

    Asinxron funksiyalar və Promis

    Promis həmçinin asinxron funksiyaları yaratmaq üçün istifadə edilir. Aşağıdakı kimi bir funksiya ilə asinxron əməliyyatlar icra edilə bilər:

    function earnAllMoney() {
      return new Promise(function (resolve, reject) {
        const result = tryEarnAllMoney();
        if (result.ok) {
          resolve(result);
        } else {
          reject(new Error(result));
        }
      });
    }
    

    Sxemli Promislər

    Bir promis, başqa bir promisi “içinə alarsa”, onlar birləşəcək və sadəcə bir promis olacaq.

    const promise = Promise.resolve(Promise.resolve(Promise.resolve('🐶')));
    promise.then(console.log); // 🐶
    

    Nəticə

    Promis, JavaScript-də asinxron əməliyyatların daha rahat və oxunaqlı idarə olunmasını təmin edir. then(), catch(), finally() metodları ilə biz asinxron əməliyyatları idarə edə bilərik. Bu metodlar birləşdirilərək mürəkkəb asinxron əməliyyatlar üçün uyğun həllər yaradır.

    P.S. Ümumiyyətlə, Promis olduqça geniş mövzudur. Burada sadəcə kiçik giriş olaraq paylaşdığım yazını aşağıdakı formadan istifadə edib genişləndirə bilərsiz.

    1 cavab Son cavab
    Cavab ver
    • Mövzu olaraq cavablandır
    🔑 Daxil ol
    • Ən köhnədən yeniyə
    • Ən yenidən köhnəyə
    • Ən çox səs




    Bilik paylaşdıqca artan bir sərvətdir
    • Daxil ol

    • Sizin hesabınız yoxdur? Qeydiyyatdan keç

    • Axtarış etmək üçün daxil olun və ya qeydiyyatdan keçin.
    • İlk yazı
      Son yazı
    0
    • Kateqoriyalar
    • Ən yeni
    • Teqlər
    • Populyar