اذهب إلى المحتوى

السؤال

نشر

عندي سؤال بسيط 

ليش اضاف رقم (1) في كلمة resolve(1)

لكن في الدرس السابق ما اضافها

علما بأني حاولت احذف رقم الواحد كتجربه لكن لم يعمل الكود

سؤال.png

Recommended Posts

  • 0
نشر

فى هذا المثال 
 

new Promise((resolve, reject) => {
    setTimeout(() => resolve(1), 1000);
});

الرقم 1 الذي تم تمريره إلى resolve(1) يمثل القيمة التي سيتم تمريرها كـ نتيجة عند نجاح الـ Promise.

و ذللك يحدث: عند استدعاء resolve(1), يتم تمرير القيمة 1 كـ "النتيجة" إلى الـ Promise. أي شيء داخل الـ resolve() يمثل النتيجة التي ستعيدها الـ Promise بعد أن يتم الوفاء بها .

إذا أزلت 1 فسيظل الكود يعمل ولكن النتيجة ستكون undefined بدلاً من قيمة محددة مثل 1.
اما فى الدرس السابق فمن الممكن ان كان التركيز على فهم مبدأ الـ Promises وليس على القيمة التي يتم تمريرها.

و لذلك اذا كان هذا سؤال خاص بدرس من دروس الدورة فيرجي إرفاق السؤال أسفل الدرس حيث يوجد صندوق للتعليقات كما هنا حيث يجب وضع السؤال هناك . حيث هنا هو قسم الأسئلة العامة ولا نجيب علي أسئلة الدورات هنا وذلك لمساعدتك بشكل أفضل.

  • 0
نشر

أرجو في قادم المرات إن كان سؤالك متعلقا بإحدى دورات الأكاديمية أن تقوم بإدراجه أسفل كلّ درس استصعب عليك فهمه أو لديك استفسار حوله، أين ستجد صندوقا للتعليقات مثل الذي هنا، يمكنك إرفاق مجلدات مشروعك أو لقطات شاشة وإرفاق الاستفسار الذي لديك وسنجيبك بكلّ صدر رحب.

بالنسبة لسؤالك، فالرقم 1 الموجود في resolve(1) هو القيمة التي يتم تمريرها عند نجاح الـPromise وهذا الرقم هو الذي يتم إرساله عند استدعاء الدالة resolve بعد مرور الوقت المحدد (في هذه الحالة، بعد 1000 ميلي ثانية أو 1 ثانية).

أما إذا قمت بحذف الرقم 1 تماما، فإن الكود قد لا يعمل كما هو متوقع، لأن الدالة resolve ستستدعى بدون أي قيمة وبشكل افتراضي، إذا لم تمرر أي قيمة إلى resolve، سيتم تمرير undefined.

لذلك إذا كنت بحاجة إلى إزالة الرقم 1، عليك التأكد من أن الكود الذي يستخدم الـPromise قادر على التعامل مع القيمة undefined.

مثلا في هذا المثال، resolve ستستدعى بدون أي قيمة أي بعد 1 ثانية وإذا كانت هناك عملية تعتمد على القيمة التي تمرر من resolve، قد تتعطل هذه العملية إذا لم تكن تتوقع الحصول على undefined:

new Promise((resolve, reject) => {
  setTimeout(() => resolve(), 1000);
})

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...