في جافا سكريبت ، الوعد هو كائن يستخدم لإجراء عمليات غير متزامنة وإرجاع النتيجة في المستقبل. ومع ذلك ، قبل تلقي النتيجة ، يمكن أن يكون الوعد في ثلاث ولايات: معلقة أو تم الوفاء بها أو مرفوضة.
قد لا يكون الحصول على قيمة من الوعد بهذه السهولة. ولكن في جافا سكريبت ، هناك عدة طرق للحصول على القيم من الوعد عندما يكون في حالة التنفيذ.
كيف يمكنني الحصول على نتيجة الوعد في جافا سكريبت? طريقة بسيطة ومريحة هي استخدام الطريقة.ثم (). تسمح لك هذه الطريقة بتمرير وظيفة سيتم تنفيذها بنتيجة الوعد عندما تصل إلى الحالة التي تم الوفاء بها.
- الحصول على نتيجة الوعد في جافا سكريبت
- طريقة بسيطة لتعيين القيم
- استخدام التزامن / الانتظار
- باستخدام الطريقة .ثم()
- مزايا وميزات الاستخدام
- سؤال وجواب
- كيف يمكنني الحصول على نتيجة الوعد في جافا سكريبت?
- كيفية استخدام الطريقة .ثم () للحصول على قيمة الوعد?
- كيف يمكنني استخدام وظيفة التزامن / الانتظار للحصول على قيمة الوعد?
- ما هي الطريقة ?أخيرا () وكيفية استخدامها للحصول على نتيجة الوعد?
- هل من الممكن الحصول على نتيجة الوعد دون استخدام الأساليب.ثم () ، غير متزامن/انتظار أو .أخيرا ()?
الحصول على نتيجة الوعد في جافا سكريبت
الوعد هو الآلية الرئيسية للبرمجة غير المتزامنة في جافا سكريبت. يسمح لك الوعد بإجراء عملية غير متزامنة والحصول على نتيجة هذه العملية لاحقا عندما تكون جاهزة.
في جافا سكريبت ، يمكنك استخدام عدة طرق للحصول على نتيجة الوعد. واحدة من أسهل الطرق هي استخدام الطريقة.ثم (). الطريقة.ثم () يقبل وظيفتي رد الاتصال-يتم استدعاء الوظيفة الأولى عند نجاح الوعد ، ويتم استدعاء الوظيفة الثانية عند حدوث خطأ. يتم تمرير هذه الوظائف كوسيطات للطريقة.ثم (). على سبيل المثال:
وعد كونست = وعد جديد ((حل ، رفض) = > {
// عملية غير متزامنة
});
وعد.ثم ((النتيجة) = > {
// التنفيذ الناجح للوعد
}).قبض ((خطأ) = > {
// معالجة الأخطاء
});
هناك طريقة أخرى للحصول على نتيجة الوعد وهي استخدام الكلمة الرئيسية غير المتزامنة ومشغل الانتظار. هذا يسمح بتنفيذ التعليمات البرمجية غير المتزامنة كما لو كانت متزامنة. يقوم بيان الانتظار بتعليق تنفيذ الوظيفة حتى يتم تنفيذ الوعد وإرجاع النتيجة. يستخدم المثال أدناه وظيفة غير متزامنة مع عامل الانتظار:
وظيفة غير متزامن جيتداتا () {
نتيجة كونست = انتظر سوماسينكفونكتيون();
// باستخدام نتيجة الوعد
}
عند استخدام الانتظار ، يجب وضع علامة على الوظيفة على أنها غير متزامنة.
تسمح لك كلتا الطريقتين بالحصول على نتيجة الوعد في جافا سكريبت. يعتمد الاختيار بينهما على المتطلبات المحددة للمهمة وهيكل الكود. من المهم أن نتذكر أن العمليات غير المتزامنة في جافا سكريبت يتم تنفيذها في الخلفية ، وبالتالي فإن نتيجة الوعد ستكون متاحة فقط بعد تنفيذها.
طريقة بسيطة لتعيين القيم
عندما نعمل مع الوعود في جافا سكريبت ، يصبح من الضروري أحيانا تعيين القيمة التي عاد بها الوعد إلى متغير. هناك عدة طرق للحصول على القيمة من الوعد ، ولكن أحد أبسطها هو استخدام عامل الانتظار.
يسمح لك بيان الانتظار بتعليق تنفيذ وظيفة غير متزامنة حتى يتم تنفيذ الوعد وإرجاع نتيجة. عند استخدام عامل الانتظار قبل الوعد ، سينتظر حتى يتم حل الوعد ، ثم يعين قيمة الوعد لمتغير.
مثال على استخدام عامل الانتظار:
وظيفة غير متزامن جيتبروميسيريسولت () {
وعد كونست = وعد جديد ((حل ، رفض) = > {
سيتيموت (() = > حل ('قيمة الوعد') ، 2000);
});
نتيجة كونست = انتظر الوعد;
وحدة التحكم.سجل (نتيجة) ؛ / / 'قيمة الوعد'
}
جيتبروميسيريسولت();
في هذا المثال ، ونحن إنشاء وظيفة جيتبروميسيريسولت غير متزامن ، داخل الذي نخلق وعد التي سيتم حلها بعد 2 ثانية وإرجاع قيمة 'قيمة الوعد'. ثم نستخدم عامل الانتظار لتعيين قيمة الوعد لمتغير النتيجة. بعد ذلك ، يمكننا استخدام نتيجة الوعد كمتغير منتظم.
ومع ذلك ، من أجل استخدام عامل الانتظار ، يجب الإعلان عن الوظيفة التي يتم استخدامها مع المعدل غير المتزامن. هذا لأنه لا يمكن استخدام عامل الانتظار في وظيفة عادية.
وبالتالي ، فإن استخدام عامل الانتظار هو طريقة سهلة لتعيين القيم من الوعود وتبسيط العمل مع التعليمات البرمجية غير المتزامنة في جافا سكريبت.
استخدام التزامن / الانتظار
التزامن / الانتظار هو بناء جملة جديد في جافا سكريبت يسمح لك بكتابة رمز غير متزامن كما لو كان متزامنا.
لاستخدام غير متزامن / انتظار ، يجب عليك وضع علامة على الوظيفة باستخدام الكلمة الرئيسية غير المتزامنة. سيسمح هذا للوظيفة باحتواء بيان انتظار ، والذي يوقف تنفيذ الوظيفة حتى يتم تنفيذ الوعد.
Пример использования async/await:
async function fetchData() {
try {
const result = await fetch('https://api.example.com/data');
const data = await result.json();
console.log(data);
} catch (error) {
console.error(error);
}
}
fetchData();
.
سوف تحتوي على نتيجة الطلب. يمكننا استخدام بيان الانتظار مرة أخرى لانتظار الاستجابة ليتم تحويلها إلى تنسيق جسون.
سيحدث خطأ ، سيتم القبض عليه من قبل كتلة المحاولة / الصيد. بهذه الطريقة يمكننا التعامل مع الخطأ دون مقاطعة تنفيذ البرنامج.
لمعالجة الأخطاء.
باستخدام الطريقة .ثم()
هي الطريقة الرئيسية للحصول على نتيجة الوعد في جافا سكريبت. يسمح لك بتنفيذ إجراءات معينة مع نتيجة الوعد عندما يصبح متاحا.
يبدو مثل هذا:
وعد.ثم (عند الوفاء ، عند الرفض)أين:
- هو وعد ، والنتيجة التي تحتاج إلى الحصول عليها;
- - الوظيفة التي سيتم تنفيذها عند اكتمال الوعد بنجاح;
- (اختياري) - الوظيفة التي سيتم تنفيذها إذا تم رفض الوعد.
كما أنه يقبل وسيطة كائن خطأ.
:
وعد كونست = وعد جديد ((حل ، رفض) = > {
سيتيموت (() = > {
حل ('نتيجة الوعد');
}, 2000);
});
وعد.ثم ((النتيجة) = > {
وحدة التحكم.سجل (نتيجة) ؛ / / إخراج "نتيجة الوعد"
}).قبض ((خطأ) = > {
وحدة التحكم.سجل (خطأ);
});
، والتي ببساطة إخراج النتيجة إلى وحدة التحكم.
، والتي سوف تعترض الخطأ وتنفيذ الإجراءات المناسبة.
مزايا وميزات الاستخدام
استخدام الوعود في جافا سكريبت له العديد من المزايا:
- التزامن: تتيح لك الوعود تنفيذ التعليمات البرمجية غير المتزامنة دون حظر مؤشر ترابط التنفيذ الرئيسي. هذا مفيد بشكل خاص عند العمل مع شبكة أو قواعد بيانات ، حيث قد تستغرق الاستجابة بعض الوقت. بدلا من انتظار الرد ، يمكنك بدء مهام أخرى ، وسيستمر تشغيل الكود عندما تكون النتيجة جاهزة.
- تبسيط العمل مع التعليمات البرمجية غير المتزامنة: توفر الوعود طريقة سهلة وبديهية للعمل مع التعليمات البرمجية غير المتزامنة. إنها تجعل من السهل مراقبة حالة تنفيذ المهام ، والتعامل مع الأخطاء ، وتنفيذ سلسلة من العمليات غير المتزامنة بالتتابع.
- نمطية وإعادة استخدامها: تتيح لك الوعود تقسيم التعليمات البرمجية غير المتزامنة إلى كتل منفصلة يمكن إعادة استخدامها وتغييرها بسهولة. يتم ذلك لتحسين قابلية الصيانة وقابلية التطوير للرمز.
- معالجة الأخطاء: توفر الوعود معالجة موثوقة ومريحة للأخطاء. إنها تجعل من السهل إضافة معالجات الأخطاء ومعالجة الاستثناءات المركزية.
ومع ذلك ، فإن استخدام الوعود له أيضا خصائصه الخاصة:
- الحاجة إلى الدعم: الوعود ليست معيارا لجافا سكريبت ، بل يجب توصيلها باستخدام المكتبات أو استخدام بيئات وقت التشغيل التي تدعمها أصلا.
- فهم المفهوم: للعمل مع الوعود ، تحتاج إلى فهم المفاهيم الأساسية للبرمجة غير المتزامنة ومبادئ الوعود ، مثل "الحل" و "الرفض" و "ثم" و "الصيد". قد يكون هذا صعبا على المطورين المبتدئين.
- رد الجحيم: إذا كنت لا تستخدم الوعود بشكل صحيح ، فقد تواجه مشكلة التعشيش العميق لعمليات الاسترجاعات ، والمعروفة باسم"جحيم رد الاتصال". لتجنب هذه المشكلة ، من الضروري تنظيم شبكة الوعود بشكل صحيح واستخدام أساليب "ثم" و "الصيد".
على الرغم من هذه الميزات ، لا يزال استخدام الوعود هو الأسلوب المفضل لتنفيذ التعليمات البرمجية غير المتزامنة في جافا سكريبت. إنها تبسط التطوير بشكل كبير وتوفر معالجة موثوقة للأخطاء ، مما يجعل الكود أكثر قابلية للقراءة والصيانة.
سؤال وجواب
كيف يمكنني الحصول على نتيجة الوعد في جافا سكريبت?
هناك عدة طرق للحصول على نتيجة الوعد في جافا سكريبت ، بما في ذلك استخدام الطريقة.ثم () ، وظيفة التزامن/الانتظار والطريقة .أخيرا ().
كيفية استخدام الطريقة .ثم () للحصول على قيمة الوعد?
الطريقة.ثم () يسمح لك بتحديد وظيفة رد الاتصال التي سيتم تنفيذها عند حل الوعد. في وظيفة رد الاتصال هذه ، يمكنك الحصول على القيمة التي تم تمريرها إلى.حل () طريقة.
كيفية استخدام المتزامن / تنتظر وظيفة للحصول على قيمة الوعد?
وظيفة التزامن / الانتظار هي السكر النحوي على الوعود ويسمح لك لكتابة التعليمات البرمجية غير المتزامنة التي تبدو متزامنة. للحصول على قيمة الوعد باستخدام التزامن/الانتظار ، استخدم الكلمة الرئيسية في الانتظار قبل استدعاء الوعد. وبالتالي ، سيتم تعليق تنفيذ الوظيفة غير المتزامنة حتى يتم حل الوعد واستلام قيمته.
ما هي الطريقة ?أخيرا () وكيفية استخدامها للحصول على نتيجة الوعد?
الطريقة.أخيرا () يسمح لك بتحديد وظيفة رد الاتصال التي سيتم تنفيذها بغض النظر عما إذا كان الوعد مسموحا به أو مرفوضا. يمكن استخدامه لتنفيذ إجراءات معينة ، بغض النظر عن نتيجة الوعد ، ولا يوفر الوصول إلى قيمته.
هل من الممكن الحصول على نتيجة الوعد دون استخدام الأساليب.ثم () ، غير متزامن/انتظار أو .أخيرا ()?
بشكل عام ، لا ، لأن الوعود مصممة للعمل مع التعليمات البرمجية غير المتزامنة ويجب استخدام الطرق المناسبة.ثم () ، غير متزامن/انتظار أو .وأخيرا () للحصول على والعمل مع قيمهم. ومع ذلك ، هناك بعض الوظائف المساعدة ، مثل الوعد.كل () ووعد.سباق () ، والتي يمكن استخدامها للعمل مع مجموعة من الوعود والحصول على نتائج دون استخدام مباشر.ثم () أو غير متزامن/في انتظار.