בקשת הסבר בפונקציית async
-
async function asd (){ var response = await fetch("https://tchumim.com/", { method: "post", headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, //make sure to serialize your JSON body body: JSON.stringify({ name: 'w', password: 'ww' }) }) .then( (response) => { //do something awesome that makes the world a better place }); console.log('ss'); }
הוא מחזיר פרומיז ולא מחזיר בכלל את הss.
אם הוא לא מחזיר ss בגלל שגיאה והא-await לא נותן להתקדם אז למה הפרומיז חוזר? -
@chagold
א. כאשר העתקתי את הקוד לקונסול והרצתי הוא כן הדפיס לי "ss". (למרות שהתשובה מ-tchumim.com היתה 404, אבל כלפיfetch
זה לא נחשב כשגיאה)
עריכה: הרצתי את הקוד באתר של תחומים, באתר אחר הייתי מקבל שגיאת CORS ואז ה-ss לא היה נדפס
ב. במקרה של שגיאה אמיתית, כלומר rejection של הפרומיס שלfetch
(לדוגמה כתובת שלא קיימת) אז באמת ה-await
נכשל, ואז השורה הבאה לא מורצת.
אבל עדיין בכל מקרה הפונקציה תחזיר פרומיס כי פונקציה אסינכרונית תמיד חוזרת מיד עם פרומיס. הפרומיס תכשל אח"כ כי היתה שגיאה בהרצת הפונקציה.