برنامه نویسی

همه چیز در مورد وعده ها!

در اینجا یک شیرجه عمیق در تمام توانایی های وعده های ES6+وجود دارد.

یک وعده در جاوا اسکریپت یک شیء است که نمایانگر تکمیل نهایی (یا عدم موفقیت) یک عمل ناهمزمان است. این دستگاه دارای چندین کارکرد داخلی است که امکان انجام کارهای ناهمزمان را به طور مؤثر فراهم می کند.

بیایید به همه عملکردهای یک وعده عمیق شیرجه بزنیم:

1. ایجاد یک وعده

یک وعده با استفاده از new Promise سازنده:

const myPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve("Success!");
  }, 2000);
});

عملکرد اجرایی دو آرگومان طول می کشد:

  1. resolve(value): این وعده را به عنوان تحقق نشان می دهد و یک ارزش را برمی گرداند.

  2. reject(error): وعده را همانطور که با یک خطا رد می شود ، علامت گذاری می کند.

در اینجا نمونه ای از یک وعده در عمل آورده شده است:

function fetchData() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      const success = true; // Change this to false to simulate an error
      if (success) {
        resolve("Data fetched successfully!");
      } else {
        reject("Error fetching data.");
      }
    }, 2000); // Simulate network delay
  });
}

fetchData()
  .then((result) => {
    console.log(result); // "Data fetched successfully!"
  })
  .catch((error) => {
    console.error(error); // "Error fetching data."
  });

روشهای وعده ها

  1. برطرف کردن
  2. رد کردن
  3. همه
  4. با صدای جنجال
  5. مسابقه
  6. هیچ

حل

یک وعده حل شده را با مقدار داده شده برمی گرداند.

const resolvedPromise = Promise.resolve("Resolved!");
resolvedPromise.then(console.log); // "Resolved!"

رد کردن

با خطای داده شده یک وعده رد شده را برمی گرداند.

const rejectedPromise = Promise.reject("Rejected!");
rejectedPromise.catch(console.error); // "Rejected!"

همه

منتظر همه وعده ها در یک آرایه برای حل و فصل است. در صورت عدم موفقیت ، کل زنجیره رد می شود.

const p1 = Promise.resolve(1);
const p2 = new Promise((resolve) => setTimeout(resolve, 1000, 2));
const p3 = Promise.reject("Error!");

Promise.all([p1, p2, p3])
  .then(console.log)
  .catch(console.error); // "Error!"

AllSettled

منتظر است تا همه وعده ها برای حل و فصل (حل و فصل یا رد) تسویه حساب کنند و یک آرایه را با نتایج برگردانند.

Promise.allSettled([p1, p2, p3]).then(console.log);
/*
[
  { status: "fulfilled", value: 1 },
  { status: "fulfilled", value: 2 },
  { status: "rejected", reason: "Error!" }
]
*/

نژاد

اولین قولی را که حل و فصل می کند برمی گرداند (یا برطرف می شود یا رد می شود).

const fast = new Promise((resolve) => setTimeout(resolve, 500, "Fast!"));
const slow = new Promise((resolve) => setTimeout(resolve, 1000, "Slow!"));

Promise.race([fast, slow]).then(console.log); // "Fast!"

هر

اولین وعده تحقق یافته را برمی گرداند و نادیده می گیرد. فقط در صورت عدم موفقیت همه رد می شود.

const fail1 = Promise.reject("Fail 1");
const fail2 = Promise.reject("Fail 2");
const success = new Promise((resolve) => setTimeout(resolve, 300, "Success!"));

Promise.any([fail1, fail2, success]).then(console.log).catch(console.error); // "Success!"

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا