0 Mustafa Suleiman نشر 6 يوليو 2023 أرسل تقرير نشر 6 يوليو 2023 أرجو منك التعليق أسفل فيديو الدورة الخاص بالسؤال حيث ستجد قسم خاص بالتعليقات، وطرح الأسئلة العامة هنا في قسم أسئلة البرمجة. والكود الذي وضحته وهو التالي لا يوجد به مشكلة حيث سيتم طباعة hello بعد فترة 3 ثواني: const wait = time => new Promise( (resolve, reject) => setTimeout(resolve, time) ) wait(3000).then(() => console.log('hello')) فما هو الخطأ الذي يظهر لك في الكونسول؟ وإليك تفسير الكود: نستخدم الوظيفة wait لإنشاء وعد (Promise) يتأخر لفترة محددة من الوقت المحدد كمعامل (time)، ثم حل الوعد (resolve) بعد انتهاء الفترة المحددة وهي لمدة 3000 ميلي ثانية (3 ثوانٍ)، ثم يتم طباعة "hello" عندما يتم حل الوعد. اقتباس
0 Mustafa Suleiman نشر 6 يوليو 2023 أرسل تقرير نشر 6 يوليو 2023 سبب المشكلة هو أنك كتبت دالة setTimeout بشكل غير صحيح، ففي جافاسكريبت يتم إعتماد طريقة camel Case في الأسماء أي أن كل كلمة بعد الأولى تبدأ بحرف كبير، لاحظ أنك كتبت settimeout بينما الصحيح هو setTimeout لاحظ حرف t كبير وليس صغير. اقتباس
0 عبدالباسط ابراهيم نشر 8 يوليو 2023 أرسل تقرير نشر 8 يوليو 2023 يوجد خطأ في النحو (syntax error) في الكود المذكور، حيث يتم كتابة "settimeout" بدلاً من "setTimeout" بحرف كبير في الحرف S const wait = time => new Promise( (resolve, reject) => setTimeout(resolve, time) ); wait(3000).then(() => console.log('hello')); الكود المذكور بالفعل بسيط ويقوم بالغرض المطلوب، ولكن يمكن تحسينه بإضافة التعامل مع حالة الخطأ (error handling) في حالة فشل الوعد (promise)، وكذلك إضافة قيمة افتراضية للوقت الممرر إلى الدالة في حالة عدم تمرير أي قيمة. يمكن تحسين الكود على النحو التالي: const wait = (time = 0) => new Promise((resolve, reject) => { if (typeof time !== 'number') { reject(new Error('Invalid time')); } setTimeout(resolve, time); }); wait(3000) .then(() => console.log('Hello')) .catch(error => console.error(error.message)); اقتباس
السؤال
Ahmed Alawwad
4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.