אסינכרוני ב JS
-
setTimeout(()=>{}, 10000); console.log("I")
זה יודפס לפני ההשהיה למרות שזה לא I/O.
הסיבה היא שהקומפיילר יוצא לחופשה בזמן ההשהיה, כל פעולה שהוא לא אמור להמשיך לעשות חישובים ולקמפל, הוא ממשיך לשורה הבאה.
בדוגמא שלך הוא ממשיך לעבוד על הלולאה לכן הוא לא ממשיך לפקודת ההדפסה. -
@יוסף-בן-שמעון הראיה שלך לא נכונה, setTimout זה I\O - לפחות באופן מדומה.
וההסבר שנתת נכון אבל זה בעצם בדיוק מה ש@מנצפך שאל: האם הוא יכול להיות בטוח בסדר הפעולות כל עוד זה לא פונקציות IO, והתשובה היא חיובית - בדיוק בגלל ההסבר שלך.
כיון ששפת JS לא כוללת רשמית שום פונקציית IO באופן מובנה (כל הפונקציות הם מהמארח כמו הדפדפן) אז נכון לומר שJS היא סינכרונית כל עוד לא מדובר בפונקציה חיצונית, ואם זו חיצונית אמור להיות תלוי אם זה IO. -
@יוסף-בן-שמעון הראיה שלך לא נכונה, setTimout זה I\O - לפחות באופן מדומה.
וההסבר שנתת נכון אבל זה בעצם בדיוק מה ש@מנצפך שאל: האם הוא יכול להיות בטוח בסדר הפעולות כל עוד זה לא פונקציות IO, והתשובה היא חיובית - בדיוק בגלל ההסבר שלך.
כיון ששפת JS לא כוללת רשמית שום פונקציית IO באופן מובנה (כל הפונקציות הם מהמארח כמו הדפדפן) אז נכון לומר שJS היא סינכרונית כל עוד לא מדובר בפונקציה חיצונית, ואם זו חיצונית אמור להיות תלוי אם זה IO. -
@dovid אמר באסינכרוני ב JS:
אז נכון לומר שJS היא סינכרונית כל עוד לא מדובר בפונקציה חיצונית, ואם זו חיצונית אמור להיות תלוי אם זה I
אני חושב שנכון לומר שכל פעולה חיצונית היא אסינכרונית.
ראיתי את זה באיזשהו מקור.
לא לפני כעת. -
@מנצפך יש המון פונקציות חיצוניות שהם סינכרוניים.
למשל document.getElementById ועוד רבים.
ניתן לומר שהכל סינכרוני חוץ ממה שכתוב שלא.
אגב, console.log זה גם לא חלק מהשפה JS... -
@dovid
אני טענתי שכל הפונקיצות החיצוניות הם אסינכרוניות. ואתה אומר שיש פוקנציות חיצוניות אסינכרוניות?ובנוסף, דווקא אני חושב ש- document.getElementById הוא סינכרוני (כלומר תוקע את התהליך). אני טועה?
ולמה אתה חושב ש Console.log הוא לא חלק מהשפה?
-
@dovid
אני טענתי שכל הפונקיצות החיצוניות הם אסינכרוניות. ואתה אומר שיש פוקנציות חיצוניות אסינכרוניות?ובנוסף, דווקא אני חושב ש- document.getElementById הוא סינכרוני (כלומר תוקע את התהליך). אני טועה?
ולמה אתה חושב ש Console.log הוא לא חלק מהשפה?
@מנצפך אמר באסינכרוני ב JS:
ובנוסף, דווקא אני חושב ש- document.getElementById הוא סינכרוני (כלומר תוקע את התהליך). אני טועה?
בדיוק. וזה חיצוני, כלומר לא חלק משפת JS.
ולמה אתה חושב ש Console.log הוא לא חלק מהשפה?
אדרבא, חפש את התיעוד שלו... זה לא חלק מJS אלא חלק מWeb Api המשותף לדפדפנים. וגם לנוד יש, ואולי לכל סביבה שמארחת JS, אבל בעצם זה פונקציה חיצונית.