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
. 가장 필요하지 않은 내부 객체입니다.