2013-08-12 3 views
0

"큐 관리자"를 만들려고했지만이 작업을 수행하는 방법에 관해서는 머리를 감쌀 수 없습니다. 내가 단순히 async을 비활성화 할 수 있다는 것을 알았지 만 모든 것이 차단되고 트리거 할 수있는 것이 필요합니다.큐잉 아약스 요청

제 아이디어는 콜백 또는 다른 것을 사용하여 다른 항목을 전달할 수있는 큐 관리자에 알리는 것입니다. 나는 그것을 여러 번 시도했지만 그걸 제대로 이해하지 못했습니다.

이 내가 상상하는 방법입니다

mc.queueManager = function(ajaxRequest) { 
    var queue = []; // The "queue", an array 

    this.request = ajaxRequest; 
    queue.push(this.request); 

    this.curtask = queue.shift() // Grab and remove the first item from the queue 

    $.ajax({ 
    type: "POST", 
    url: "handler.php", 
    data: {"data": this.curtask}, 
    success: function(data) { 
     // Handle data retrieved 
    }, 
    complete: function() { 
     // So, request completed, now this is the callback 
     if (queue.length > 0) { 
     mc.queueManager(queue.shift()); // Grab next item and repeat 
     } 
    } 
    }); 
}; 

지금 내가 아무것도 발사에서 여러 요청을 방지하지 않습니다 이해할 수있는, 지금은 그렇게하는 방법을 알아낼 수 없습니다. 현재 $.deferred을 조사 중입니다. 또한 $.when()/.then()을 사용하여 다른 방법을 시도했지만 아무 소용이 없습니다.

+0

대기열에 요청을 추가하는 것과 같은 방법으로 게시 한 방법이 있습니까? 나는'queue'가 queuemanager에 전달되지 않는 다른 방법으로 작성했을 것입니다. 대신 다른 곳에 저장되어 있기 때문에 queuemanager가 큐를 처리하는 동안 더 많은 요청이 추가 될 수 있습니다. –

+0

@KevinB 예, 그들을 구분하는 것은 좋은 생각입니다! 나는 가장 간단한 일들을 놓치고 너무 많이 일해왔다. 고마워, 나는 이번에는 조금 다른 시도를 할 것이다. – ejx

답변

0

setInterval (ajaxcall(), duration) 메서드는 어떻습니까?