jQuery 1.5 นำวัตถุรอตัดบัญชีใหม่และวิธีการที่แนบมา.when
, และ.Deferred
._Deferred
สำหรับผู้ที่ไม่ได้ใช้.Deferred
มาก่อนผมเคยข้อเขียนแหล่งสำหรับมัน
อะไรคือวิธีที่เป็นไปได้ของวิธีการใหม่เหล่านี้
ฉันได้อ่านAPIและแหล่งข้อมูลแล้วฉันจึงรู้ว่ามันทำอะไร คำถามของฉันคือเราจะใช้คุณสมบัติใหม่เหล่านี้ในรหัสประจำวันได้อย่างไร
ฉันมีตัวอย่างง่ายๆของคลาสบัฟเฟอร์ที่เรียกใช้การร้องขอ 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
ใช้ มันเป็นวัตถุภายในซึ่งคุณมักจะไม่ต้องการ