Ahmed Alawwad نشر 6 يوليو 2023 أرسل تقرير مشاركة نشر 6 يوليو 2023 1 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
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" عندما يتم حل الوعد. اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Ahmed Alawwad نشر 6 يوليو 2023 الكاتب أرسل تقرير مشاركة نشر 6 يوليو 2023 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Mustafa Suleiman نشر 6 يوليو 2023 أرسل تقرير مشاركة نشر 6 يوليو 2023 سبب المشكلة هو أنك كتبت دالة setTimeout بشكل غير صحيح، ففي جافاسكريبت يتم إعتماد طريقة camel Case في الأسماء أي أن كل كلمة بعد الأولى تبدأ بحرف كبير، لاحظ أنك كتبت settimeout بينما الصحيح هو setTimeout لاحظ حرف t كبير وليس صغير. اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
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)); اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
السؤال
Ahmed Alawwad
رابط هذا التعليق
شارك على الشبكات الإجتماعية
4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.