
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 אסינכרוני שנראה תקין לגמרי.
איזו טעות אסינכרונית תפסה אתכם הכי חזק, ואיך גיליתם אותה?

נכתב על ידי צוות רבוז