2010-03-16 2 views
3

내가 dojo.xhrPost이 아약스 호출은 function sendRequest()설문 조사

에 의해 싸여있다
요청 전송하기 위해 사용하고 Ajax와 미꾸라지와 서버 I 지속적으로 (매 3 초)가 서버에 같은 아약스 포스트를 보내 지금했습니다
Dojo로 서버 설문을 구현하려면 어떻게해야합니까? 나는 기본적으로 그래서 여기에 적용 건너 프레임 워크의 일반적인 방법이다, sendRequest() 매 3 초

답변

3

내가 미꾸라지는 내장 폴링하는 방법을 가지고 있다고 생각하지 않습니다를 호출 할 필요가

var Poll = function(pollFunction, intervalTime) { 
    var intervalId = null; 

    this.start = function(newPollFunction, newIntervalTime) { 
     pollFunction = newPollFunction || pollFunction; 
     intervalTime = newIntervalTime || intervalTime; 

     if (intervalId) { 
      this.stop(); 
     } 

     intervalId = setInterval(pollFunction, intervalTime); 
    }; 

    this.stop = function() { 
     clearInterval(intervalId); 
    }; 
}; 

사용법 :

또는 귀하의 경우

var p = new Poll(function() { console.log("hi!"); }, 1000); 
p.start(); 
setTimeout(function() { p.stop();}, 5000); 
:

var p = new Poll(sendRequest, 3000); 
p.start(); 

당신은으로 이것을하려면 도장 패키지는 다음 사소한 확장 :

dojo.provide("Poll"); 

dojo.declare("Poll", null, { 
    intervalId: null, 
    pollFunction: null, 
    intervalTime: null, 

    constructor: function(newPollFunction, newIntervalTime) { 
     this.pollFunction = newPollFunction; 
     this.intervalTime = newIntervalTime; 
    }, 

    start: function(newPollFunction, newIntervalTime) { 
     this.pollFunction = newPollFunction || this.pollFunction; 
     this.intervalTime = newIntervalTime || this.intervalTime; 

     this.stop(); 
     this.intervalId = setInterval(this.pollFunction, this.intervalTime); 
    }, 

    stop: function() { 
     clearInterval(this.intervalId); 
    } 
}); 

사용법 : 내가 찾은

var p = new Poll(function() {console.log("hi");}, 250); 
p.start(); 
setTimeout(dojo.hitch(p, p.stop), 1000); 
0

더 나은 다음과 같이 할 수있는 :

  1. 빈을 포함하는 변수가 배열 (대기열)
  2. 각 poll에서 폴링 할 setInterval은 배열 (대기열)에 새 객체 (폴링 매개 변수 사용)를 푸시합니다. 같은 매개 변수를 가진 객체를 하나의 단일 객체로 축소하여 폴을 압축 할 수도 있습니다. 이러한 객체에 핸들러 함수를 넣을 수도 있습니다.
  3. 대기열을 검사하는 타이머가 있습니다. 반환 값이 없을 경우
  4. 큐에 보류중인 개체가있는 경우 반환되지 않은 보류중인 xhr 작업이 있는지 확인하고 잠시 기다리십시오. 동시에 너무 많은 xhr이 보류중인 것을 원하지 않습니다. 아이 패드는)
  5. 이 보류중인 XHR 작업이 첫 번째 설문 조사 대상 큐에서,없고는

이 과정의 장점은 당신이 쉽게 스로틀 폴링 간격을 할 수있다 xhrGet 경우는, 잘 때 특정 XHR 작업을 작동 그것을 질식 시간 초과되며 폴링 요청의 민영화를 쉽게 구현할 수 있습니다.

0

계속 그리드를 업데이트하려면 그리드의 '새로 고침 - 완료'콜백 함수에 아약스 요청을 포함시킬 수 있습니다.

yourGrid.on('dgrid-refresh-complete', function(event) { 

//Ajax request fireing every 3 sec 


}