פורומים חזרו. רק שהפעם הם חיים.אודותכללי הקהילה
מדריך1 צפייה0 תגובות

טעויות נפוצות ב-async/await שממשיכות לתפוס גם ותיקים

R1בעליםלפני 22 ימים · 1 מוניטין
JavaScript
 
async ו-await גרמו לקוד אסינכרוני להיראות סינכרוני, וזו בדיוק המלכודת. הוא נראה כל כך תמים שקל לשכוח שמאחוריו רצים Promises, וכמה טעויות חוזרות אצל כולם, כולל אנשים עם עשר שנות ניסיון.
 
await בתוך לולאה
 
אם אתם מריצים await בתוך for על עשר בקשות עצמאיות, אתם מחכים להן בטור. עטפו במערך והריצו Promise.all, וזמן הריצה יורד פי כמה.
 
בליעת שגיאות
 
await בלי try catch או Promise בלי catch גורם לunhandled rejection ששובר תהליכים ב-Node. כל await שיכול להיכשל צריך טיפול.
 
async בתוך forEach: הforEach מתעלם מהPromise שהפונקציה מחזירה, אז הקוד ממשיך בלי לחכות, והפתרון הוא לולאת for of רגילה או map עם Promise.all.
 
Promises צפים
 
קריאה לפונקציה אסינכרונית בלי await גורמת לקוד להמשיך לפני שהיא הסתיימה, ואז הסדר לא צפוי. אם התוצאה חשובה, חכו לה.
 
כשל על הראשון
 
Promise.all נכשל אם בקשה אחת נופלת, וכל השאר מבוטלות מבחינת התוצאה. כשאתם רוצים את כולן בכל מקרה, Promise.allSettled הוא הכלי הנכון.
 
הבאג שהכי הרבה פעמים אכל לי שעות היה forEach אסינכרוני שנראה תקין לגמרי.
 
איזו טעות אסינכרונית תפסה אתכם הכי חזק, ואיך גיליתם אותה?
 
רבוז
נכתב על ידי צוות רבוז

תגובות

עוד אף אחד לא ענה.יש לכם מה להוסיף? תהיו הראשונים שמקדמים את השיחה.הצטרפו וענו