jQuery.Deferred, מוצג לראשונה ב גרסה 1.5, הוא אובייקט כלים המשורשר, יכול לרשום מספר פונקציות קריאה חוזרת בתוך התור, להפעיל תור של פונקציות של קריאה חוזרת, ולהעביר מצב מוצלח או נכשל של כל פוקציה סינכרונית או אסינכרונית.
ב JavaScript זה מקובל להפעיל פונקציות שלחלופין מקבלות קריאות חוזרות המופעלות במסגרת פונקציה הזו.
לדוגמה, בגרסאות הקודמות של jQuery 1.5, תהליכים אסינכרונים, כמו jQuery.ajax() מקבלים פונקציות של קריאה חוזרת עבור שימוש בעתיד הקרוב במקרים של הצלחה, כישלון או סיום בקשת Ajax.
jQuery.Deferred מכניס מספר הרחבות בשיטות ניהול והפעלה. לדוגמה, jQuery.Deferred מספק דרכים גמישות עבור טיפול במספר קריאות חוזרות, וקריאות חוזרות האלה ניתן להפעיל ללא קשר לביצוע הפעלה של קריאה חוזרת מקורית.jQuery Deferred מבוסס על עיצוב של CommonJS Promises/A.
מודל אחד להבנת נדחים הוא לחשוב על זה בתור פונקצית עטיפה.שיטות deferred.then(), deferred.done(), ו deferred.fail() מציינות פונקציות עבור קריאה, ושיטות deferred.resolve(args) ו deferred.reject(args) מפעילות פונקציות עם ארגומנטים שספקתם. פעם דחיה pפתורה או בוטלה היא נשארת באותו מצב; קריאה חוזרת של deferred.resolve() תכשל, לדוגמה. אם פונקציות נוספות הוספו באמצעות deferred.then() אחרי שדחיה פתורה, הן יופעלו מייד עם הארגומנטים שסופקו לפני זה.
ברוב המקרים שבהם הפעלות של jQuery API מחזירות אובייקט נדחה או תואם-נדחה, כמו jQuery.ajax() או. jQuery.when(), אתם צריכים להשתמש בשיטות deferred.then(), deferred.done(), ו deferred.fail() עבור הפעלה של פונקציות קריאה חוזרת של תור הנדחה. הפעלות פנימיות של API או קוד, שמייצר דחיה מפעיל deferred.resolve() או deferred.reject() הנדחים בשלב כלשהו, שיגרום להפעלה של פונקציה של קריאה חוזרת.
בנאי jQuery.Deferred
בנאי jQuery.Deferred יוצר אובייקט נדחה חדש. מפעיל new הוא אופציאונלי.
jQuery.Deferred יכול להעביר פונקציה נוספת, שמופעלת מייד לפני החזרת הבנאי ומעביר אובייקט נוצר נדחה, וגם אובייקט this בתור ארגומנט הראשון של הפונקציה.פונקציה המופעלת של קריאה חוזרת ניתן לחבר באמצעות deferred.then() למשל.
אובייקט נדחה מתחיל במצב פתור. כל הקריאות החוזרות שהוספו לאובייקט באמצעות deferred.then(), deferred.done(), או deferred.fail() נכנסות לתור, כדי להיות מופעלות בהמשך. הפעלה של deferred.resolve() או deferred.resolveWith() מעבירה נדחה למצב פתור ומייד מפעיל כל doneCallback, שמוגדר.הפעלה של deferred.reject() או deferred.rejectWith() מעבירה נדחה למצב בוטל ומייד מפעיל כל failCallback, שמוגדר. מייד אחרי שאובייקט נכנס למצב פתור או בוטל הוא נשאר במצב הזה. ניתן להוסיף קריאות חוזרות, כדי לפתור או לבטל נדחה, הן יופעלו מייד.
אובייקט נדחה מסוגל לשרשור, בדומה לאובייקט של jQuery שמסוגל לשרשור, אבל יש לו שיטות משלו.אחרי יצירה של אובייקט נדחה, אתם יכולים להשתמש באחת מהשיטות הבאות, או לשרשר ישירות מיצירת אובייקט, או לשמור אובייקט בתוך המשתנה ולהשתמש באחת או יותר שיטות עבור משתמה הזה.

