קורס פיתוח מתקדם בפייתון
פרק
>
רמה
Async/Await ## איזה הם **Async** ו- **Await**? ב-JavaScript, `Async/Await` הם דרך עבודה עם פעולות אסינכרוניות. לפני כן, היה עלינו לעבוד עם `callbacks` או `promises`. בעזרת `async` ו-`await`, קריאת קוד אסינכרוני נעשית דומה יותר לקוד סינכרוני, מה שהופך אותה ליותר קריאה ולתחזוקה קלה יותר. ### איך להשתמש ב-Async/Await 1. **פונקציה אסינכרונית**: כל פונקציה המכריזה על `async` לפני ההגדרה שלה הופכת לפונקציה אסינכרונית, שמשמעותה היא שהיא תחזיר `promise`. 2. **Await**: משמש בפונקציות אסינכרוניות כדי להמתין ל-`promise`. כאשר אנו משתמשים ב-`await`, הפונקציה עוצרת וממתינה להבטחה להתממש או להיכשל, ואז ממשיכה לביצוע שאר הקוד. ```javascript async function fetchData() { let response = await fetch('url'); let data = await response.json(); return data; } ``` ### יתרונות השימוש ב-Async/Await - **קריאות**: הקוד אסינכרוני נראה כמו קוד סינכרוני. - **טיפול בשגיאות**: קל מאוד להשתמש ב-`try/catch` כדי ללכוד שגיאות. - **שרשור הבטחות**: אין צורך בשרשור הבטחות, מה שמפחית את הסכנה של "הגיהינום של ה-Callback". ### חסרונות - הפונקציה האסינכרונית תמיד תחזיר הבטחה, גם אם לא משתמשים ב-`await` בתוכה. - יש צורך בשימוש זהיר בטיפול שגיאות, מכיוון שכל שגיאה בפונקציה תפסיק את ריצת הקוד אלא אם היא תטופל במסגרת `try/catch`. ### דוגמה מתקדמת עם Async/Await השימוש ב-async/await יחד עם פעולות קוד אחרות מאפשר לנו לעבוד עם אסינכרוניות בצורה נקייה וברורה: ```javascript async function getWeather(city) { try { let response = await fetch(`weatherAPI/${city}`); let weatherData = await response.json(); console.log(weatherData); } catch (error) { console.error("Error fetching weather data: ", error); } } ``` עם הבנת השימוש ב-async/await, אנו יכולים לשפר את קריאות הקוד שלנו תוך שמירה על טיפול יעיל באסינכרוניות.
יצירת הודעה
לפעמים תרצו שהקוד שלכם ב-Python יפעל רק לאחר שקריטריון מסוים מתקיים ולא שהקוד ירוץ בבת אחת. זה ניתן להשגה באמצעות שימוש בפונקציות אסינכרוניות. שם הפונקציה נגזר מהמילה asynchronous והן נקראות על ידי הוספת הביטוי await לפני הפונקציה.
בשלב זה נלמד כיצד לכתוב הודעות משלנו ולהציגן כחלונות קופצים. על ידי הוספת await, נוכל לעצור את הקוד, לאפשר לכם לקרוא את ההודעה שכתבתם ולהמשיך את הקוד רק לאחר סגירת החלון הקופץ.

מטרה
לתייג שלטים כך שיציגו הודעה באמצעות פונקציות await/async.
לשלטים במחסן אין תוויות, החומרים הוצבו לאחרונה ולא הוכנו. רעיון טוב יהיה לכתוב הודעות לכל תווית ולסכם את כל הפריטים שבדקת באמצעות פונקציית await/async write().
הלכו אל הסימן X לאור, הפנו את הפנים שלכם אל התיבות והשתמשו בפונקציה speak() כדי לזהות את תכולת התיבות. ישנם ארבעה (4) קבועים, אחד לכל אחת מהתיבות, והם: green_crate, blue_crate, red_crate, ו-orange_crate, והם מתאימים לכל אחד מהשטיחים הצבעוניים מול כל תיבה.
לאחר שזיהיתם את תכולת התיבה, השתמשו בפונקציה write() כדי לכתוב הודעה על השלט. התיבות יכילו ארבעה (4) סוגים שונים של ירקות: "potato", "onion", "corn", ו-"carrot", כתבו אותם באמצעות הפונקציה כך: await player.write("potato").
הקוד await נוסף כדי לזהות את הפונקציה כ-פונקציה async. פונקציות מסוג זה יכולות לרוץ בו זמנית עם תהליכים אחרים בקוד שלכם. זה שימושי כאשר אתם רוצים להשהות את הקוד שלכם ולהמתין שמשהו יתרחש כמו לחיצה על כפתור או פקודה שמגיעה מתוך הרשת. לכן, הפקודה await מתווספת, ובמקרה של פונקציית write() זה כדי להשהות את התוכנית על מנת להציג הודעה.
לאחר שכתבתם הודעות על כל התיבות, הלכו אל סימן ה-X הזהוב בסוף המחסן כדי לסכם את מספר הפריטים בכל תיבה. צרו רשימה עם כל הקבועים והשתמשו בפונקציה write() כדי לכתוב הודעה על מנת להשלים את השלב.