קורס פיתוח מתקדם בפייתון
פרק 4
>
רמה 1
ספר קוד
שלב 1: יצירת הודעה | 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, אנו יכולים לשפר את קריאות הקוד שלנו תוך שמירה על טיפול יעיל באסינכרוניות.