Hansı Promise növlərini bilirsiniz?
sobes.tech Süni İntellekt
AI-dan cavab
Node.js-də əsas növ vədinlər:
-
Əsas Vəd: Gələcək dəyərlər və ya səhvlər üçün konteynerdir. Üç vəziyyəti var:
pending(gözləmə),fulfilled(uğurla tamamlandı),rejected(xəta ilə rədd edildi).new Promise()konstruktoru ilə yaradılır.// Əsas vədin yaradılması const myPromise = new Promise((resolve, reject) => { // Asinxron əməliyyat setTimeout(() => { const success = true; if (success) { resolve("Əməliyyat uğurla tamamlandı"); } else { reject("Xəta baş verdi"); } }, 1000); }); -
Promise.resolve(): Dərhal
fulfilledvəziyyətinə keçən vədi yaradır.// Həll olunmuş vədin yaradılması const resolvedPromise = Promise.resolve("Artıq yerinə yetirilmiş vəddir"); -
Promise.reject(): Dərhal
rejectedvəziyyətinə keçən vədi yaradır.// Rədd edilmiş vədin yaradılması const rejectedPromise = Promise.reject(new Error("Rədd edilmiş vəddir")); -
Promise.all(): Vahid array vəd qəbul edir və yeni vəd qaytarır. Bu yeni vəd, bütün arraydakı vədlər uğurla tamamlandıqda
fulfilledvəziyyətinə keçir. Nəticələr array şəklində, giriş vədlərinin ardıcıllığında olacaq. Əgər hər hansı vəddən biri rədd edilərsə,Promise.all()dərhal rədd edilir.// Promise.all() istifadə const promise1 = Promise.resolve(1); const promise2 = Promise.resolve(2); const promise3 = new Promise((resolve, reject) => setTimeout(() => resolve(3), 100)); Promise.all([promise1, promise2, promise3]) .then((values) => { // values [1, 2, 3] olacaq }) .catch((error) => { // Xəta emalı }); -
Promise.allSettled(): Vahid array vəd qəbul edir və yeni vəd qaytarır. Bu yeni vəd, bütün vədlər uğurla tamamlandıqda və ya rədd edildikdə
fulfilledvəziyyətinə keçir. Nəticələr, hər bir vədin nəticəsini təsvir edən obyektlərdən ibarət array olacaq (vəziyyət və dəyər/ səbəb).Promise.all()-dan fərqli olaraq, dərhal rədd edilmir.// Promise.allSettled() istifadə const promiseA = Promise.resolve("uğur"); const promiseB = Promise.reject("xəta"); Promise.allSettled([promiseA, promiseB]) .then((results) => { // results obyektlər array olacaq: // [{status: 'fulfilled', value: 'uğur'}, {status: 'rejected', reason: 'xəta'}] }); -
Promise.race(): Vahid array vəd qəbul edir və yeni vəd qaytarır. Bu yeni vəd, ilk tamamlanan və ya rədd edilən vədin nəticəsi və ya səbəbi ilə
fulfilledvə yarejectedvəziyyətinə keçir.// Promise.race() istifadə const promiseFast = new Promise((resolve, reject) => setTimeout(() => resolve("Mən sürətliyəm!"), 50)); const promiseSlow = new Promise((resolve, reject) => setTimeout(() => resolve("Mən yavaşam..."), 500)); Promise.race([promiseFast, promiseSlow]) .then((value) => { // value "Mən sürətliyəm!" olacaq }); -
Promise.any(): Vahid array vəd qəbul edir və yeni vəd qaytarır. Bu vəd, uğurla tamamlanan ilk vədin dəyəri ilə
fulfilledvəziyyətinə keçir. Əgər bütün vədlər rədd edilərsə,Promise.any()AggregateErrorxətası qaytarır, hansı ki, bütün rədd edilən vədlərin səbəblərini ehtiva edir. Node.js 12-dən etibarən mövcuddur.// Promise.any() istifadə const promiseFail1 = Promise.reject("Xəta 1"); const promiseSuccess = Promise.resolve("Uğur!"); const promiseFail2 = Promise.reject("Xəta 2"); Promise.any([promiseFail1, promiseSuccess, promiseFail2]) .then((value) => { // value "Uğur!" olacaq }) .catch((error) => { // Bütün vədlər rədd edilərsə, AggregateError emalı });