الوعد في JavaScript يشبه "الوعد" الذي تقطعه للقيام بشيء ما في المستقبل. إنه كائن يمثل الإكمال (أو الفشل) النهائي لمهمة غير متزامنة وقيمتها الناتجة. ببساطة، يعمل الوعد كعنصر نائب لقيمة غير متوفرة بعد ولكنها ستكون موجودة في المستقبل.
يمكن أن توجد الوعود في إحدى الحالات الثلاث:
يتم إنشاء الوعد باستخدام مُنشئ الوعد، والذي يأخذ معلمتين: الحل والرفض — وكلاهما وظيفتان.
إذا نجحت عملية المزامنة، يمكنك استدعاء وظيفة الحل للوفاء بالوعد.
إذا حدث خطأ ما، يمكنك استدعاء وظيفة الرفض للإشارة إلى أنه تم رفض الوعد بسبب خطأ.
يمكنك التعامل مع نتيجة الوعد باستخدام .then() للنجاح و .catch() لمعالجة الأخطاء.
مثال: إنشاء الوعد وتنفيذه
const fetchData = new Promise((resolve, reject) => { // Simulate an asynchronous task like fetching data from a server setTimeout(() => { const data = "Some data from the server"; // Simulate success and resolve the promise resolve(data); // You can also simulate an error by rejecting the promise // reject(new Error("Failed to fetch data")); }, 1000); }); // Consuming the Promise fetchData .then((data) => { console.log("Data fetched:", data); }) .catch((error) => { console.error("Error fetching data:", error); });
سيعيد العزم (البيانات) البيانات الناجحة عند الوفاء بالوعد.
إذا حدث خطأ ما، فسيؤدي الرفض (خطأ) إلى ظهور خطأ يمكن معالجته باستخدام .catch().
تسلسل الوعود هو عملية تنفيذ سلسلة من المهام غير المتزامنة، واحدة تلو الأخرى، باستخدام الوعود. تعمل كل طريقة .then() في السلسلة بعد استيفاء الطريقة السابقة.
يسمح لك بكتابة تعليمات برمجية نظيفة وقابلة للقراءة للتعامل مع عمليات متعددة غير متزامنة بترتيب معين. يمكن لكل .then() إرجاع قيمة يتم تمريرها إلى .then() التالي في السلسلة، مما يسمح لك بمعالجة المهام خطوة بخطوة.
مثال: تسلسل الوعود المتعددة
new Promise((resolve, reject) => { setTimeout(() => resolve(1), 1000); // Initial async task resolves with 1 }) .then((result) => { console.log(result); // Logs: 1 return result * 2; // Returns 2 to the next .then() }) .then((result) => { console.log(result); // Logs: 2 return result * 3; // Returns 6 to the next .then() }) .then((result) => { console.log(result); // Logs: 6 return result * 4; // Returns 24 to the next .then() });
في هذا المثال:
يبدأ الوعد بالحل بـ 1 بعد ثانية واحدة.
كل .then() لاحقة تتلقى النتيجة من السابقة، وتضاعفها أو تضاعفها ثلاث مرات، وتمررها إلى .then() التالية.
يتم تسجيل النتيجة خطوة بخطوة: 1، 2، 6.
معالجة الأخطاء في التسلسل
يمكنك اكتشاف أي خطأ في سلسلة الوعد باستخدام .catch(). إذا فشل أي من .then()، تتوقف السلسلة، ويتم تمرير الخطأ إلى كتلة .catch().
new Promise((resolve, reject) => { setTimeout(() => resolve(1), 1000); }) .then((result) => { console.log(result); // Logs: 1 return result * 2; }) .then((result) => { throw new Error("Oops, something went wrong!"); }) .catch((error) => { console.error("Caught error:", error.message); // Catches the error });
تعد الوعود أداة قوية في JavaScript للتعامل مع المهام غير المتزامنة. باستخدام Promise Chaining، يمكنك إدارة عمليات غير متزامنة متعددة بطريقة نظيفة وقابلة للقراءة ومتسلسلة. من خلال فهم كيفية إنشاء الوعود واستخدامها وربطها معًا، ستكون في طريقك إلى إتقان البرمجة غير المتزامنة في JavaScript!
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3