jQuery 1.5 नई आस्थगित वस्तु और संलग्न तरीकों को लाता है .when
, .Deferred
और ._Deferred
।
जिन लोगों ने .Deferred
पहले उपयोग नहीं किया है , मैंने इसके लिए स्रोत को एनोटेट किया है ।
इन नए तरीकों के संभावित उपयोग क्या हैं, हम उन्हें पैटर्न में कैसे फिट करते हैं?
मैंने पहले ही एपीआई और स्रोत को पढ़ा है , इसलिए मुझे पता है कि यह क्या करता है। मेरा सवाल यह है कि हम इन नई सुविधाओं का उपयोग रोजमर्रा के कोड में कैसे कर सकते हैं?
मेरे पास बफर क्लास का एक सरल उदाहरण है जो AJAX अनुरोध को क्रम में कहता है। (पिछले एक खत्म के बाद एक शुरुआत)।
/* Class: Buffer
* methods: append
*
* Constructor: takes a function which will be the task handler to be called
*
* .append appends a task to the buffer. Buffer will only call a task when the
* previous task has finished
*/
var Buffer = function(handler) {
var tasks = [];
// empty resolved deferred object
var deferred = $.when();
// handle the next object
function handleNextTask() {
// if the current deferred task has resolved and there are more tasks
if (deferred.isResolved() && tasks.length > 0) {
// grab a task
var task = tasks.shift();
// set the deferred to be deferred returned from the handler
deferred = handler(task);
// if its not a deferred object then set it to be an empty deferred object
if (!(deferred && deferred.promise)) {
deferred = $.when();
}
// if we have tasks left then handle the next one when the current one
// is done.
if (tasks.length > 0) {
deferred.done(handleNextTask);
}
}
}
// appends a task.
this.append = function(task) {
// add to the array
tasks.push(task);
// handle the next task
handleNextTask();
};
};
मैं प्रदर्शनों और के संभावित उपयोगों के लिए देख रहा हूँ .Deferred
और .when
।
के उदाहरणों को देखना भी प्यारा होगा ._Deferred
।
jQuery.ajax
उदाहरण के लिए नए स्रोत से जोड़ना धोखा है।
मुझे विशेष रूप से इस बात में दिलचस्पी है कि जब हम एक ऑपरेशन को सिंक्रोनाइज़ या असिंक्रोनस तरीके से करते हैं तो क्या तकनीक उपलब्ध हैं।
._Deferred
बस सच है "आस्थगित वस्तु" जो .Deferred
उपयोग करता है। यह एक आंतरिक वस्तु है जिसकी आपको सबसे अधिक आवश्यकता होगी।