Yesterday Angular v19.2 was released 🎉
Even though this isn't a major release, we have some great new features!
1️⃣ The new experimental httpResource (Signal based API calls
2️⃣ Support default value in resource()
3️⃣ Support streaming resources
4️⃣ Support for hashtag#TypeScript 5.8
5️⃣ Support untagged template literals in expressions
6️⃣ A schematic to migrate to Self Closing tags
There are also some notable bug changes and other improvements. If you want to read the full release notes and dive into the code you can find everything here:
https://github.com/angular/angular/releases/tag/19.2.0
👍2
Next.js 15.2
• Redesigned Error UI & Improved Stack Traces
• Streaming Metadata
• Turbopack Performance Improvements
• View Transitions (experimental)
• Node.js Middleware (experimental)
https://nextjs.org/blog/next-15-2
• Redesigned Error UI & Improved Stack Traces
• Streaming Metadata
• Turbopack Performance Improvements
• View Transitions (experimental)
• Node.js Middleware (experimental)
https://nextjs.org/blog/next-15-2
nextjs.org
Next.js 15.2
Next.js 15.2 includes updates for debugging errors, metadata, Turbopack, and more.
❤5
The Chance 2025
برنامج تدريبي مخصص لتأهيل المتدربين على العمل في الشركات الأكبر على مستوى الشرق الأوسط.
https://www.the-chance.net
برنامج تدريبي مخصص لتأهيل المتدربين على العمل في الشركات الأكبر على مستوى الشرق الأوسط.
https://www.the-chance.net
❤3
Master the Art of Crafting Responsive Web Apps like a Pro!
A must-have DevTool for all web developers that will make your job easier.
https://responsively.app
❤8
AI Agents Course
by Hugging Face 🤗
This free course will take you on a journey, from beginner to expert, in understanding, using and building AI agents.
https://huggingface.co/learn/agents-course/unit0/introduction
by Hugging Face 🤗
This free course will take you on a journey, from beginner to expert, in understanding, using and building AI agents.
https://huggingface.co/learn/agents-course/unit0/introduction
❤2
لما تيجي تبني موقع بـ Next.js، ممكن تلاقي نفسك محتاج تمنع بعض المستخدمين من الوصول لصفحات معينة، سواء لأنهم مش مسجلين دخولهم (Unauthorized - 401) أو لأن الصفحة مش متاحة لهم أساسًا (Forbidden - 403). 🛑
دردشة خفيفة عن الفرق بين الصفحتين، امتى تستخدم كل واحدة فيهم، وإزاي تطبقهم في Next.js 15 بطريقة منظمة وسهلة. 💯
———
📍 Dev Community
https://dev.to/alisamir/unauthorized-and-forbidden-pages-in-nextjs-15-2jm
📍 Medium
https://medium.com/@dev.alisamir/unauthorized-and-forbidden-pages-in-next-js-15-%EF%B8%8F-e2ec267a4697
دردشة خفيفة عن الفرق بين الصفحتين، امتى تستخدم كل واحدة فيهم، وإزاي تطبقهم في Next.js 15 بطريقة منظمة وسهلة. 💯
———
Unauthorized and Forbidden Pages in Next.js 15 🛑
📍 Dev Community
https://dev.to/alisamir/unauthorized-and-forbidden-pages-in-nextjs-15-2jm
📍 Medium
https://medium.com/@dev.alisamir/unauthorized-and-forbidden-pages-in-next-js-15-%EF%B8%8F-e2ec267a4697
❤3🔥1
The Intelligent Terminal. 🔥
Become a command line power user on day one.
Warp combines AI and your dev team’s knowledge in one fast, intuitive terminal.
https://www.warp.dev
❤8
ESLint now officially supports linting of CSS ⚡️
Taking our next step towards providing a language-agnostic platform for source code linting.
https://eslint.org/blog/2025/02/eslint-css-support
eslint.org
ESLint now officially supports linting of CSS - ESLint - Pluggable JavaScript Linter
A pluggable and configurable linter tool for identifying and reporting on patterns in JavaScript. Maintain your code quality with ease.
❤5
الـدَيْـن التـقـنـي .. Technical Debt 💰
.
.
عارف لما تبقى مستعجل تخلص شغل، فتقول "ما علينا، خلينا نعديها دلوقتي، وبعدين نرجع نصلحها"؟ المشكلة إن "بعدين" دي غالبًا مش بتيجي، وبتلاقي نفسك في دوامة مشاكل ملهاش نهاية! 👀
في عالم البرمجة، فيه حاجة اسمها Technical Debt أو الدين التقني، وده ببساطة الكود اللي بيتم كتابته بسرعة أو بدون اهتمام بالجودة، علشان ننجز حاجة معينة على المدى القصير، لكن على المدى الطويل بيتحول لكابوس! 😨
———
https://www.linkedin.com/posts/dev-alisamir_devabrguide-activity-7302372227067310080-ReYE
https://qabilah.com/posts/VZC8RNt70Xo
.
.
عارف لما تبقى مستعجل تخلص شغل، فتقول "ما علينا، خلينا نعديها دلوقتي، وبعدين نرجع نصلحها"؟ المشكلة إن "بعدين" دي غالبًا مش بتيجي، وبتلاقي نفسك في دوامة مشاكل ملهاش نهاية! 👀
في عالم البرمجة، فيه حاجة اسمها Technical Debt أو الدين التقني، وده ببساطة الكود اللي بيتم كتابته بسرعة أو بدون اهتمام بالجودة، علشان ننجز حاجة معينة على المدى القصير، لكن على المدى الطويل بيتحول لكابوس! 😨
———
https://www.linkedin.com/posts/dev-alisamir_devabrguide-activity-7302372227067310080-ReYE
📍 Qabilah
https://qabilah.com/posts/VZC8RNt70Xo
❤5👏1🤯1
10 Best GitHub Repositories to Learn Node.js (2025) 💯
1- Learn Node.js – A Beginner-Friendly Guide
https://github.com/manthanank/learn-nodejs
2- Node.js Best Practices
https://github.com/goldbergyoni/nodebestpractices
3- Node.js Projects
https://github.com/MAshrafM/NodeJS_Projects
4- JavaScript Algorithms
https://github.com/trekhleb/javanoscript-algorithms
5- Awesome Node.js
https://github.com/sindresorhus/awesome-nodejs
6- Node.js Full Stack Tutorial
https://github.com/Subham-Maity/node-js-full-stack-tutorial
7- The Node.js Master Class
https://github.com/pirple/The-NodeJS-Master-Class
8- Learn You Node
https://github.com/workshopper/learnyounode
9- Express.js Boilerplate
https://github.com/hagopj13/node-express-boilerplate
10- GraphQL Starter Kit
https://github.com/kriasoft/graphql-starter-kit
❤3👏1
Operating Systems Course for Beginners 🚀
This course will give you a comprehensive understanding of how operating systems function and manage resources.
https://youtu.be/yK1uBHPdp30
👍3
Professional English for Software Engineer
This program is designed to provide you with the knowledge, skills, and tools necessary to become a highly effective professional communicator.
https://app.manara.tech/learning/36
❤5
The Complete Backend Developer Roadmap 2025 🔥
https://miro.com/app/board/uXjVLx4LrpU=
https://docs.google.com/document/d/18XX61zq7HwtyNYoOV-VRNChx-CxGK8VJi3BLjXx2n_s
❤5
ليه لازم تستخدم الـ Module Bundler؟ 🤔
.
.
لما تبدأ مشروع ويب جديد، الأمور في الأول بتكون بسيطة وسهلة، مجرد كام ملف HTML و CSS و JavaScript، وكل حاجة شغالة تمام.
لكن مع الوقت، ومع إضافة ميزات جديدة، بتبدأ الأمور تتعقد تدريجيًا، وتلاقي نفسك بتواجه مشاكل زي بطء التحميل أو صعوبة في تنظيم الكود...
والحل السحري لكل المشاكل دي هو الـ Module Bundler... تعال نوضح الموضوع ببساطة...💯
———
إيه هو الـ Module Bundler؟ 🛠
ببساطة، هو أداة بتاخد كل الملفات اللي بتستخدمها في مشروعك (JS, CSS, Images... إلخ)، وتظبطها وتجمعهم في ملف واحد أو مجموعة ملفات صغيرة ومنظمة، بحيث تكون جاهزة للتشغيل على المتصفح بكفاءة عالية.
من أشهر الـ Bundlers اللي ممكن تستخدمهم:
- Webpack
- Vite
- Parcel
- Rollup
———
ليه تستخدم الـ Module Bundler؟ 🤷♂️
1- تحسين الأداء (Performance Optimization) 🚀
- بيعمل Minification للكود، يعني بيشيل المسافات والتعليقات الزايدة، فحجم الملف بيصغر ويتحمّل أسرع.
- بيعمل Tree Shaking، يعني بيشيل أي كود مش مستخدم من المشروع علشان يبقى خفيف.
2- تقليل عدد الـ Requests 📦
بدل ما المتصفح يطلب 100 ملف JavaScript و CSS، الـ Bundler بيحطهم في ملف واحد أو كام ملف قليلين، فالصفحة تفتح أسرع.
3- التعامل مع الـ Dependencies بسهولة 🔗
لو بتستخدم مكتبات زي React أو Vue، الـ Bundler بينظمها ويدمجها في الكود بذكاء.
4- التوافق مع جميع المتصفحات 🌐
بيحول الكود الحديث لكود قديم مفهوم للمتصفحات القديمة باستخدام أدوات زي Babel.
5- سهولة تقسيم الكود (Code Splitting) 🧩
ممكن تحمل أجزاء معينة من الكود لما تحتاجها بس، بدل ما تحمل كل حاجة مرة واحدة، وده بيسرّع الصفحة.
6- دعم الـ Hot Reloading 🔄
مع أدوات التطوير اللي بتيجي مع الـ Bundler (زي Vite أو Webpack Dev Server)، لما تعدل الكود الصفحة بتتحدث لوحدها من غير ما تعمل Refresh.
7- سهولة التعامل مع الملفات المختلفة 🎨
تقدر تستخدم CSS و SCSS وتضيف صور وخطوط بسهولة عن طريق إعدادات الـ Bundler زي الـ Loaders في Webpack.
———
امتى ممكن تستغنى عن الـ Bundler؟ ❌
لو مشروعك صغير جدًا، زي صفحة HTML بسيطة مع شوية CSS و JS، ممكن تشتغل من غير Bundler. لكن لو المشروع كبر ودخل فيه مكتبات أو أكواد كتير، هتحتاجه جدًا.
———
خلاصة الكلام 🎯
استخدام Module Bundler بيساعدك في:
✅ تحسين الأداء وتسريع التحميل.
✅ تنظيم المشروع وتقليل المشاكل.
✅ توافق أفضل مع المتصفحات.
✅ تجربة تطوير أسهل وأسرع.
———
وفقكم الله لكل خير 🌿
.
.
لما تبدأ مشروع ويب جديد، الأمور في الأول بتكون بسيطة وسهلة، مجرد كام ملف HTML و CSS و JavaScript، وكل حاجة شغالة تمام.
لكن مع الوقت، ومع إضافة ميزات جديدة، بتبدأ الأمور تتعقد تدريجيًا، وتلاقي نفسك بتواجه مشاكل زي بطء التحميل أو صعوبة في تنظيم الكود...
والحل السحري لكل المشاكل دي هو الـ Module Bundler... تعال نوضح الموضوع ببساطة...💯
———
إيه هو الـ Module Bundler؟ 🛠
ببساطة، هو أداة بتاخد كل الملفات اللي بتستخدمها في مشروعك (JS, CSS, Images... إلخ)، وتظبطها وتجمعهم في ملف واحد أو مجموعة ملفات صغيرة ومنظمة، بحيث تكون جاهزة للتشغيل على المتصفح بكفاءة عالية.
من أشهر الـ Bundlers اللي ممكن تستخدمهم:
- Webpack
- Vite
- Parcel
- Rollup
———
ليه تستخدم الـ Module Bundler؟ 🤷♂️
1- تحسين الأداء (Performance Optimization) 🚀
- بيعمل Minification للكود، يعني بيشيل المسافات والتعليقات الزايدة، فحجم الملف بيصغر ويتحمّل أسرع.
- بيعمل Tree Shaking، يعني بيشيل أي كود مش مستخدم من المشروع علشان يبقى خفيف.
2- تقليل عدد الـ Requests 📦
بدل ما المتصفح يطلب 100 ملف JavaScript و CSS، الـ Bundler بيحطهم في ملف واحد أو كام ملف قليلين، فالصفحة تفتح أسرع.
3- التعامل مع الـ Dependencies بسهولة 🔗
لو بتستخدم مكتبات زي React أو Vue، الـ Bundler بينظمها ويدمجها في الكود بذكاء.
4- التوافق مع جميع المتصفحات 🌐
بيحول الكود الحديث لكود قديم مفهوم للمتصفحات القديمة باستخدام أدوات زي Babel.
5- سهولة تقسيم الكود (Code Splitting) 🧩
ممكن تحمل أجزاء معينة من الكود لما تحتاجها بس، بدل ما تحمل كل حاجة مرة واحدة، وده بيسرّع الصفحة.
6- دعم الـ Hot Reloading 🔄
مع أدوات التطوير اللي بتيجي مع الـ Bundler (زي Vite أو Webpack Dev Server)، لما تعدل الكود الصفحة بتتحدث لوحدها من غير ما تعمل Refresh.
7- سهولة التعامل مع الملفات المختلفة 🎨
تقدر تستخدم CSS و SCSS وتضيف صور وخطوط بسهولة عن طريق إعدادات الـ Bundler زي الـ Loaders في Webpack.
———
امتى ممكن تستغنى عن الـ Bundler؟ ❌
لو مشروعك صغير جدًا، زي صفحة HTML بسيطة مع شوية CSS و JS، ممكن تشتغل من غير Bundler. لكن لو المشروع كبر ودخل فيه مكتبات أو أكواد كتير، هتحتاجه جدًا.
———
خلاصة الكلام 🎯
استخدام Module Bundler بيساعدك في:
✅ تحسين الأداء وتسريع التحميل.
✅ تنظيم المشروع وتقليل المشاكل.
✅ توافق أفضل مع المتصفحات.
✅ تجربة تطوير أسهل وأسرع.
———
وفقكم الله لكل خير 🌿
❤12👍5👏2
لو شغال بـ React، أكيد سمعت عن useCallback، بس هل فعلًا محتاج تستخدمه؟ 🤔
في المقال ده، هتفهم الـ useCallback بطريقة بسيطة، وإزاي تستخدمه صح عشان تحسن أداء الكود بتاعك بدون تعقيد. 🚀
——-
📍 Dev Community
https://dev.to/alisamir/simplifying-react-hooks-usecallback-46pp
📍 Medium
https://medium.com/@dev.alisamir/simplifying-react-hooks-usecallback-bb03cf54a641
في المقال ده، هتفهم الـ useCallback بطريقة بسيطة، وإزاي تستخدمه صح عشان تحسن أداء الكود بتاعك بدون تعقيد. 🚀
——-
Simplifying React Hooks: useCallback 💯
📍 Dev Community
https://dev.to/alisamir/simplifying-react-hooks-usecallback-46pp
📍 Medium
https://medium.com/@dev.alisamir/simplifying-react-hooks-usecallback-bb03cf54a641
❤4
25 JavaScript String Methods Cheat Sheet - Part 1.pdf
891.6 KB
أهم 25 دالة للتعامل مع الـ Strings في JavaScript 💯
.
.
1. length
2. charAt()
3. charCodeAt()
4. toUpperCase()
5. toLowerCase()
6. slice()
7. substring()
8. trim()
9. trimStart()
10. trimEnd()
11. String.concat()
12. endsWith()
———
وفقكم الله لكل خير 🌿
.
.
25 JavaScript String Methods Cheat Sheet - Part 1 💡
1. length
2. charAt()
3. charCodeAt()
4. toUpperCase()
5. toLowerCase()
6. slice()
7. substring()
8. trim()
9. trimStart()
10. trimEnd()
11. String.concat()
12. endsWith()
———
وفقكم الله لكل خير 🌿
❤5
دردشة سريعة عن الـ Shadow DOM 💡
.
.
تخيل معايا أنك شغال على مشروع ضخم، وعامل Components Modular، بس فجأة حصلت كارثة! الـ CSS اللي كتبته لـمكون (Component) معين بقى بيأثر على مكونات (Components) تانية في الصفحة، والـ JavaScript بدأ يدخل في متاهات بسبب الـ Global Scope. الحل؟ هنا بييجي دور Shadow DOM!
تعال ندردش شوية عن Shadow DOM، إزاي بيشتغل، ليه هو مهم، وإزاي تستخدمه عمليًا في مشاريعك...🔥
———
https://www.linkedin.com/posts/dev-alisamir_webdeveloper-webdevelopment-devabrguide-activity-7303859163757957121-bwdh
https://qabilah.com/posts/pXMvwi8VKXk
https://www.facebook.com/share/p/1A8EL2kmMj
———
وفقكم الله لكل خير 🌿
.
.
تخيل معايا أنك شغال على مشروع ضخم، وعامل Components Modular، بس فجأة حصلت كارثة! الـ CSS اللي كتبته لـمكون (Component) معين بقى بيأثر على مكونات (Components) تانية في الصفحة، والـ JavaScript بدأ يدخل في متاهات بسبب الـ Global Scope. الحل؟ هنا بييجي دور Shadow DOM!
تعال ندردش شوية عن Shadow DOM، إزاي بيشتغل، ليه هو مهم، وإزاي تستخدمه عمليًا في مشاريعك...🔥
———
https://www.linkedin.com/posts/dev-alisamir_webdeveloper-webdevelopment-devabrguide-activity-7303859163757957121-bwdh
📍 Qabilah
https://qabilah.com/posts/pXMvwi8VKXk
https://www.facebook.com/share/p/1A8EL2kmMj
———
وفقكم الله لكل خير 🌿
❤5
الـ Asynchronous Programming في JavaScript ⚙️
.
.
البرمجة فيها نوعين أساسيين: Synchronous و Asynchronous، ولما نفهم الفرق بينهم، هيبقى أسهل نعرف ليه الـ Asynchronous مهم جدًا.
ده يعني إن الكود بيتنفذ خطوة بخطوة، بمعنى إن الكود مبيكملش تنفيذ أي خطوة تانية إلا لما الخطوة اللي قبلها تخلص. يعني لو عندك عملية بتاخد وقت زي إنك بتحمل بيانات من السرفر عن طريق الـ API، الكود هيفضل مستني لحد ما البيانات تتحمل قبل ما يكمل باقي التنفيذ.
أما في البرمجة الـ Asynchronous، الكود يقدر ينفذ حاجات كتير في نفس الوقت من غير ما يستنى العملية الطويلة تخلص. يعني لو عندك عملية زي تحميل البيانات من السرفر، الكود ممكن يستمر في تنفيذ أكواد تانية، ولما البيانات تتحمل، الكود هيعرف ويتعامل مع النتيجة.
———
في JavaScript، عندنا طريقتين رئيسيتين للتعامل مع الـ asynchronous programming
🔻 الـ Callbacks
🔻 الـ Promises
(وطبعًا async/await اللي هو تحسين للـ Promises)
———
أول طريقة للتعامل مع الـ asynchronous programming كانت عن طريق الـ Callbacks. الفكرة ببساطة إنك بتمرر دالة معينة كـ "callback" للكود اللي بيتنفذ، ولما الكود ده يخلص، الدالة دي بتشتغل.
لكن الـ callbacks بتتحول بسرعة لكود معقد جدًا لما يكون عندك عمليات كتير وبتحتاج تكتب حاجات كتير جوة بعضها، وده اللي بنسميه Callback Hell.
هنا بيجي دور الـ Promises، اللي هي طريقة جديدة وأكثر تنظيمًا للتعامل مع العمليات الـ asynchronous. الـ Promise هو في الأساس "وعد" إن العملية هتخلص في المستقبل.
الـ Promise بيكون ليه 3 حالات:
🔻 حالة الـ Pending: يعني العملية لسه مخلصتش.
🔻 حالة الـ Fulfilled: يعني العملية نجحت وطلعت النتيجة.
🔻 حالة الـ Rejected: يعني العملية فشلت وفيه خطأ حصل.
لما العملية تخلص بنجاح، الـ Promise بيتحول لحالة "fulfilled"، ولو العملية فشلت بيتحول لحالة "rejected".
———
خلينا نشوف مثال عشان نفهم الكلام ده بشكل أوضح. هنفترض إننا عايزين نحاكي عملية استرجاع بيانات من الـ API.
في الكود ده، الدالة fetchData بترجع Promise. داخل الـ Promise، بنستخدم إما resolve لو العملية نجحت أو reject لو حصل خطأ.
باستخدام then، بنقدر نتعامل مع النتيجة لو العملية نجحت، ولو حصل خطأ، الـ catch بتساعدنا في التعامل معاه.
———
علشان نخلي الكود أبسط وأوضح، ظهر حاجة اسمها async/await اللي بتشتغل على الـ Promises بس بشكل مبسط جدًا وبتخلي الكود يبان كأنه synchronous.
نفس المثال اللي اللي فات نقدر نكتبه بطريقة async/await بالشكل ده:
الميزة هنا إننا استخدمنا await عشان نستنى النتيجة من الـ Promise وكأن العملية دي synchronous، لكن في الحقيقة الكود شغال بطريقة asynchronous.
وبدل ما نستخدم then و catch، استخدمنا try و catch علشان نتعامل مع النجاح أو الفشل.
———
✅ تنظيم الكود: الكود بيبقى أنضف وأبسط في الفهم مقارنة بالـ Callbacks.
✅ الـ Error Handling أفضل: التعامل مع الأخطاء بقى أسهل باستخدام try/catch.
✅ لما يكون عندك مشروع كبير، الـ async/await هيساعدك في إدارة الأكواد الطويلة والمعقدة بسهولة.
———
وفقكم الله لكل خير 🌿
.
.
البرمجة فيها نوعين أساسيين: Synchronous و Asynchronous، ولما نفهم الفرق بينهم، هيبقى أسهل نعرف ليه الـ Asynchronous مهم جدًا.
📌 الـ Synchronous Programming:
ده يعني إن الكود بيتنفذ خطوة بخطوة، بمعنى إن الكود مبيكملش تنفيذ أي خطوة تانية إلا لما الخطوة اللي قبلها تخلص. يعني لو عندك عملية بتاخد وقت زي إنك بتحمل بيانات من السرفر عن طريق الـ API، الكود هيفضل مستني لحد ما البيانات تتحمل قبل ما يكمل باقي التنفيذ.
📌 الـ Asynchronous Programming:
أما في البرمجة الـ Asynchronous، الكود يقدر ينفذ حاجات كتير في نفس الوقت من غير ما يستنى العملية الطويلة تخلص. يعني لو عندك عملية زي تحميل البيانات من السرفر، الكود ممكن يستمر في تنفيذ أكواد تانية، ولما البيانات تتحمل، الكود هيعرف ويتعامل مع النتيجة.
———
📌 إزاي الكلام ده بيحصل في JavaScript؟
في JavaScript، عندنا طريقتين رئيسيتين للتعامل مع الـ asynchronous programming
🔻 الـ Callbacks
🔻 الـ Promises
(وطبعًا async/await اللي هو تحسين للـ Promises)
———
📌 الـ Callbacks
أول طريقة للتعامل مع الـ asynchronous programming كانت عن طريق الـ Callbacks. الفكرة ببساطة إنك بتمرر دالة معينة كـ "callback" للكود اللي بيتنفذ، ولما الكود ده يخلص، الدالة دي بتشتغل.
لكن الـ callbacks بتتحول بسرعة لكود معقد جدًا لما يكون عندك عمليات كتير وبتحتاج تكتب حاجات كتير جوة بعضها، وده اللي بنسميه Callback Hell.
📌 الحل: الـ Promises
هنا بيجي دور الـ Promises، اللي هي طريقة جديدة وأكثر تنظيمًا للتعامل مع العمليات الـ asynchronous. الـ Promise هو في الأساس "وعد" إن العملية هتخلص في المستقبل.
الـ Promise بيكون ليه 3 حالات:
🔻 حالة الـ Pending: يعني العملية لسه مخلصتش.
🔻 حالة الـ Fulfilled: يعني العملية نجحت وطلعت النتيجة.
🔻 حالة الـ Rejected: يعني العملية فشلت وفيه خطأ حصل.
لما العملية تخلص بنجاح، الـ Promise بيتحول لحالة "fulfilled"، ولو العملية فشلت بيتحول لحالة "rejected".
———
خلينا نشوف مثال عشان نفهم الكلام ده بشكل أوضح. هنفترض إننا عايزين نحاكي عملية استرجاع بيانات من الـ API.
const fetchData = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
const dataAvailable = true;
if (dataAvailable) {
resolve("Data retrieved successfully!");
} else {
reject("Error: Unable to retrieve data.");
}
}, 3000);
});
};
fetchData()
.then((result) => console.log(result))
.catch((error) => console.log(error));في الكود ده، الدالة fetchData بترجع Promise. داخل الـ Promise، بنستخدم إما resolve لو العملية نجحت أو reject لو حصل خطأ.
باستخدام then، بنقدر نتعامل مع النتيجة لو العملية نجحت، ولو حصل خطأ، الـ catch بتساعدنا في التعامل معاه.
———
📌 الـ Async/Await
علشان نخلي الكود أبسط وأوضح، ظهر حاجة اسمها async/await اللي بتشتغل على الـ Promises بس بشكل مبسط جدًا وبتخلي الكود يبان كأنه synchronous.
نفس المثال اللي اللي فات نقدر نكتبه بطريقة async/await بالشكل ده:
const fetchData = async () => {
try {
const result = await new Promise((resolve, reject) => {
setTimeout(() => {
const dataAvailable = true;
if (dataAvailable) {
resolve("Data retrieved successfully!");
} else {
reject("Error: Unable to retrieve data.");
}
}, 3000);
});
console.log(result);
} catch (error) {
console.log(error);
}
};
fetchData();الميزة هنا إننا استخدمنا await عشان نستنى النتيجة من الـ Promise وكأن العملية دي synchronous، لكن في الحقيقة الكود شغال بطريقة asynchronous.
وبدل ما نستخدم then و catch، استخدمنا try و catch علشان نتعامل مع النجاح أو الفشل.
———
📌 ليه تستخدم الـ Promises والـ Async/Await؟
✅ تنظيم الكود: الكود بيبقى أنضف وأبسط في الفهم مقارنة بالـ Callbacks.
✅ الـ Error Handling أفضل: التعامل مع الأخطاء بقى أسهل باستخدام try/catch.
✅ لما يكون عندك مشروع كبير، الـ async/await هيساعدك في إدارة الأكواد الطويلة والمعقدة بسهولة.
———
وفقكم الله لكل خير 🌿
❤12🔥2