סינכרוני

אנונימי123

משתמש מקצוען
שלום!
יש לי פונקציה שצריכה להחזיר ערך בוליאני,
הבעיה היא שבתוך הפונקציה אני עושה קריאת http כך שהערך הבוליאני שאני אמורה להחזיר מפונקציה תלוי בערך המוחזר מקריאת ה- http.
הבעיה היא שהפונקציה עושה לי return undefined כי היא לא מחכה לביצוע הקריאה אלא ישר מחזירה לי את הערך...
מה הפתרון???
תודה מראש!!!!!
 

5127109

מהמשתמשים המובילים!
עיצוב גרפי
עימוד ספרים
לא כתבת באיזה שפה אבל בJS זה נראה ככה, יש את הפרומיס המסורתי ויש את אסינק אוויט.
דוגמאות קוד כאן
 

s976

משתמש סופר מקצוען
הנדסת תוכנה
D I G I T A L
שלום!
יש לי פונקציה שצריכה להחזיר ערך בוליאני,
הבעיה היא שבתוך הפונקציה אני עושה קריאת http כך שהערך הבוליאני שאני אמורה להחזיר מפונקציה תלוי בערך המוחזר מקריאת ה- http.
הבעיה היא שהפונקציה עושה לי return undefined כי היא לא מחכה לביצוע הקריאה אלא ישר מחזירה לי את הערך...
מה הפתרון???
תודה מראש!!!!!
א. בגדול, הפתרון הוא לסדר את הדברים בצורה אחרת. לא לעשות כך שהפונקציה תחזיר משהו, אלא להעביר לפונקצייה callback ולהפעיל אותו כשתהיה תשובה מהשרת.

ב. בסטנדרט החדש אפשר לעשות את זה בצורה אחרת - לסמן async לפני שם הפונקציה ולציין await לפני הקריאה בשרת. ואז זה כאילו הופך את הקוד לסינכרוני.
ג. אפשר גם להחזיר promise מתוך הפונקציה.

אם לא שולטים בפתרון א. אני לא ממליץ לגשת לפתרונות ב. ג.
פתרון א. מאוד חשוב להבנה איך הדברים עובדים.
לפתרון ב. לא מומלץ לגשת לפני שמבינים איך עובד פתרון ג.
:)
 

5127109

מהמשתמשים המובילים!
עיצוב גרפי
עימוד ספרים
callback זה סיוט, צריכים להבין אבל לא להתחיל עם זה בקוד אסינכרוני. זה נהיה יותר ויותר מורכב והקוד הופך ללא קריא ומעצבן וגם הטפול בשגאות לא משהו מובנה וצריכים לשים לב לכל נקודה בפני עצמה.
async await זה הדבר וזה ממש משהו ואחרי שזה באצבעות אי אפשר להגמל מזה!!

קוד:
const func = async ()=>{
try {
const res = await fetch('https://jsonplaceholder.typicode.com/todos/1')
  .then(response => response.json())
  console.log(res)
}
catch (err){
console.log(err)
}
}
func()

אפשר להדביק את הקוד בקונסול ולשחק עם זה
Screen Shot 2020-06-03 at 13.56.05.png
 

אנונימי123

משתמש מקצוען
תודה רבה לכולם!!!
עזרתם לי מאד!!!
-- אשמח לדעת האם צריך להוסיף איזה הרשאה בצד השרת בשביל שייתן לי לגשת ע"י promise או להוסיף איזה מודול באנגולר...
תודה רבה!!!
 

s976

משתמש סופר מקצוען
הנדסת תוכנה
D I G I T A L
callback זה סיוט, צריכים להבין אבל לא להתחיל עם זה בקוד אסינכרוני. זה נהיה יותר ויותר מורכב והקוד הופך ללא קריא ומעצבן וגם הטפול בשגאות לא משהו מובנה וצריכים לשים לב לכל נקודה בפני עצמה.
async await זה הדבר וזה ממש משהו ואחרי שזה באצבעות אי אפשר להגמל מזה!!

קוד:
const func = async ()=>{
try {
const res = await fetch('https://jsonplaceholder.typicode.com/todos/1')
  .then(response => response.json())
  console.log(res)
}
catch (err){
console.log(err)
}
}
func()

אפשר להדביק את הקוד בקונסול ולשחק עם זהצפה בקובץ המצורף 663374
גם await וגם then?
פחות מסתדר לי.
 

5127109

מהמשתמשים המובילים!
עיצוב גרפי
עימוד ספרים
גם await וגם then?
פחות מסתדר לי.
כן!
אני רואה את זה הרבה בפרט הקטע של FETCH, כי צריך לעשות לו res.json() אז כבר משרשים את זה, במקום שורה שנים חדשים. אם משתמשים בספריה כמו אקסיוס או רווקיסט אין זה, וזה בסדר גמור. יש הנוהגים לשרשר גם את הארור, אבל הם יחידים....
הawait קורא לפונקציה שמחזירה promise כך שצריך לעשות לזה then.
זה לא קריאה לפונקציה, זה בעצם אומר לקומפילר להכניס את כל הקוד כאילו בתוך הTHEN על הצד שיתקבל. זהו רק סוכר סינטטי בשביל הפרומיס הרגיל. אז כמו היום, הכל עטיפות.
 

s976

משתמש סופר מקצוען
הנדסת תוכנה
D I G I T A L
כן!
אני רואה את זה הרבה בפרט הקטע של FETCH, כי צריך לעשות לו res.json() אז כבר משרשים את זה, במקום שורה שנים חדשים.
מעניין מאוד.
יש סיכוי שלא ראית את זה במקור מוסמך אלא באיזה בלוג של איזה הודי? על פניו נשמע רעיון רע.
 

s976

משתמש סופר מקצוען
הנדסת תוכנה
D I G I T A L
כמו שאני הבנתי...
הawait קורא לפונקציה שמחזירה promise כך שצריך לעשות לזה then.
מקווה שהבנתי נכון---
נכון. אבל בשביל לקבל את הresolve של promise אפשר לעשות עוד פעם await (במקום לעשות then).
 

אולי מעניין אותך גם...

הפרק היומי

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


תהילים פרק קנ

א הַלְלוּיָהּ הַלְלוּ אֵל בְּקָדְשׁוֹ הַלְלוּהוּ בִּרְקִיעַ עֻזּוֹ:ב הַלְלוּהוּ בִגְבוּרֹתָיו הַלְלוּהוּ כְּרֹב גֻּדְלוֹ:ג הַלְלוּהוּ בְּתֵקַע שׁוֹפָר הַלְלוּהוּ בְּנֵבֶל וְכִנּוֹר:ד הַלְלוּהוּ בְתֹף וּמָחוֹל הַלְלוּהוּ בְּמִנִּים וְעוּגָב:ה הַלְלוּהוּ בְצִלְצְלֵי שָׁמַע הַלְלוּהוּ בְּצִלְצְלֵי תְרוּעָה:ו כֹּל הַנְּשָׁמָה תְּהַלֵּל יָהּ הַלְלוּיָהּ:
נקרא  1  פעמים

ספירת העומר

לוח מודעות

למעלה