русский  עברית
tadam logo
דוגמאות jQuery
מצאתם שגיאה?
סמנו אותה עם העכבר ותלחצו
Ctrl + Enter
בדיקת כתיב Xhtml.co.il
Orphus system

jQuery.when( deferreds )

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

jQuery.when( deferreds )

הוספה בגרסה: 1.5
deferreds
אחד או יותר אובייקטים נדחים, או אובייקטים JavaScript פשוטים.
אם אובייקט נדחה אחד נשלח ל jQuery.when, הוא מוחזר על ידי שיטה ושיטות נוספות של אובייקט נדחה ויכול להפעיל קריאה חוזרת המצורפת, כמו defered.then. כאשר אובייקט נדחה פתור או בוטל, בדרך כלל על ידי קוד שיצר אובייקט הנדחה בהתחלה, פונקציות המתאימות של קריאה חוזרת יופעלו. לדוגמה, אובייקט jqXHR, שהוחזר באמצעות jQuery.ajax הוא אובייקט נדחה וניתן להשתמש בו בצורה הבאה:
$.when( $.ajax("test.aspx") ).then(function(ajaxArgs){ 
     alert(ajaxArgs[1]); /* ajaxArgs is [ "success", statusText, jqXHR ] */
});
אם ארגומנט יחיד נשלח ל jQuery.when והוא לא אובייקט נדחה, הוא יטופל כי אובייקט נדחה פתור וכל doneCallbacks (פונקציות קריאה חוזרת מוצלחות) מצורפות יופעלו מייד. doneCallbacks שולחות ארגומנט מקורי. במקרה הזה כל failCallbacks (פונקציות קריאה חוזרת נכשלות), שאתם יכולים להגדיר, לא יופעלו אף פעם, מכיוון שאובייקט נדחה לא יבוטל. לדוגמה:
$.when( { testing: 123 } ).done(
   function(x){ alert(x.testing); } /* alerts "123" */
);

במקרה שמספר אובייקטים הנדחים נשלחים ל jQuery.when, שיטה מחזירה אובייקט נדחה "אב" החדש, שעוקב על מצב של כל אובייקטים הנדחים, שהוא מקבל. שיטה פותרת אובייקט אב הנדחה, ברגע שכל הנדחים פתורים, או מבטל אובייקט אב הנדחה ברגע שאחד מהנדחים בוטל. אם אובייקט נדחה יהיה פתור, הוא מעביר ערכים פתורים של כל הנדחים, שנשלחו ל jQuery.when. לדוגמה, כאשר נדחה מבצע בקשות של jQuery.ajax(), בתור הארגומנטים יהיו אובייקטים של jqXHR עבור הבקשות, לפי הסדר שהם נמצאים ברשימת הארגומנטים.

במקרה של אובייקטים נדחים מרובים, כאשר אחד מהנדחים בוטל, jQuery.when מייד מפעיל failCallbacks עבור אובייקט אב נדחה שלו. שימו לב שחלק מהנדחים עשוים עדיין להיות לא פתורים ברגע הזה. אם אתם צריכים לבצע עיבוד נוסף במקרה זה, כגון ביטול כל בקשות AJAX הלא גמורות, אתם יכולים לשמור קישורים לאובייקטים בסיסים של jqXHR ולבדוק/לבטל אותם ב failCallback.

דוגמאות

דוגמה 1

מפעיל פונקציה אחרי שתי בקשות המוצלחות של Ajax. (ראו תיעוד על jQuery.ajax() עבור תיאור מלא של המקרי הצלחה ושגיאה עבור בקשות Ajax).
$.when($.ajax("/page1.php"), $.ajax("/page2.php")).done(function(a1,  a2){
    /* a1 and a2 are arguments resolved for the page1 and page2 ajax requests, respectively */
   var jqXHR = a1[2]; /* arguments are [ "success", statusText, jqXHR ] */
   if ( /Whip It/.test(jqXHR.responseText) ) {
      alert("First page has 'Whip It' somewhere.");
   }
});

דוגמה 2

מפעיל פונקציה myFunc כאשר שתי בקשות ajax מוצלחות, או מפעיל myFailure אם אחת מהן שגויה.
$.when($.ajax("/page1.php"), $.ajax("/page2.php"))
  .then(myFunc, myFailure);
האם מידע זה היה מועיל?
   

תגובות