Promises
שיעור 8 מתוך 9 בקורס החלקים המאתגרים ב-JavaScript מודרני (ES6+) של Coddy.
לפעמים אנחנו צריכים לבצע משימות מסוימות, שעשויות לקחת זמן מה להשלמתן.
אי אפשר לכתוב קוד כזה באופן סינכרוני רגיל, ולכן קוראים לו קוד אסינכרוני, או בקיצור קוד async.
Promises הם אובייקטים של Javascript שמבטיחים שמשימות async יושלמו ומחזירים את התוצאה, שיכולה להיות הצלחה או כישלון!
ל-Promise יכולים להיות שלושה מצבים: 1. ממתין (המצב ההתחלתי) 2. הושלם בהצלחה (מחזיר את התוצאה) 3. נדחה (מחזיר שגיאה)
let myPromise = new Promise(function(resolve, reject) {
resolve("Everything is fine"); // הפונקציה הזו נקראת אם המשימה הושלמה בהצלחה
reject("Error"); // הפונקציה הזו נקראת אם המשימה נכשלה
});
// או עם פונקציית חץ
let myPromise2 = new Promise((resolve, reject) => {//code});כאן myPromise הוא אובייקט Promise. פונקציית ה-callback resolve נקראת אם ה-Promise הושלם בהצלחה, ו-reject נקראת אם ה-Promise נדחה.
myPromise.then( value => console.log(value)) // הכול בסדר
.catch( error => console.log(error)) // שגיאה כדי לגשת לערך התוצאה, אם ה-Promise הצליח, אפשר להשתמש ב-.then( value => // your code ) . אם ה-Promise נדחה, אפשר להשתמש ב-.catch( value => // your code ).
בדרך כלל משתמשים ב-Promises במשימות async, למשל בעת קריאה ל-APIs של צד השרת (צד קדמי), בבקשות למסד נתונים (צד שרת) ועוד.
אתגר
בינוניכתוב פונקציה getPromise שמחזירה הבטחה שנפתרת למחרוזת זהה או נדחית עם המחרוזת "Rejected" אם מחרוזת הקלט היא "Coddy"
נסו בעצמכם
function getPromise(s) {
// כתבו כאן קוד
}כל השיעורים ביחידה החלקים המאתגרים ב-JavaScript מודרני (ES6+)
2בואו נצלול פנימה
תחום בלוק – let ו-constפונקציות חץSpread ו-Restלולאת for...ofמחלקותPromisesAsync ו-Awaitתרגלו בעצמכם: קומפיילר JavaScript אונליין