문제

사용 중입니다 dojo.xhrpost Ajax 요청을 보냈습니다
전화는 a function sendRequest()

나는 지금 지속적으로 (3sec마다) 서버에 동일한 ajax 게시물을 보냅니다.
Dojo와 함께 서버 폴링을 구현하려면 어떻게해야합니까? 기본적으로 전화해야합니다 sendRequest() 3 초마다

도움이 되었습니까?

해결책

Dojo가 폴링을위한 방법이 내장되어 있다고 생각하지 않으므로 여기에는 프레임 워크에 적용 가능한 일반적인 방법이 있습니다.

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 패키지로 원한다면 다음은 사소한 확장입니다.

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);

다른 팁

나는 이것을 좋아하는 것이 더 낫다는 것을 알았습니다.

  1. 빈 배열 (대기열)이 포함 된 변수가 있습니다.
  2. 각 설문 조사에서 SetInterval to Poll은 새 개체 (폴 매개 변수와 함께)를 배열 (큐)로 밀어 넣습니다. 동일한 매개 변수를 가진 객체를 하나의 단일 객체로 붕괴시켜 설문 조사를 압축 할 수도 있습니다. 핸들러 기능을 이러한 개체에 넣을 수도 있습니다
  3. 대기열을 검사 할 타이머가 있어야합니다. 아무것도 없다면 돌아옵니다
  4. 대기열에 보류중인 개체가있는 경우, 이미 보류중인 XHR 작업이 반환되지 않은지 확인합니다. 기다리면 기다리면 XHR의 보류가 너무 많아서 일부 장치 (예 : iPad)가 초안을 선택하지 않습니다.
  5. 보류중인 XHR 작업이 없으면 첫 번째 폴링 객체를 삭제하고 xhrget

이 절차의 이점은 설문 조사 간격을 쉽게 스로틀로 스로틀하고 특정 XHR 운영 시간이 중단 될 때 잘 작동하며 폴링 요청의 민영화를 쉽게 구현할 수 있다는 것입니다.

그리드를 지속적으로 업데이트하려면 그리드의 'Compert-Complete'콜백 기능에 AJAX 요청을 포함시킬 수 있습니다.

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

//Ajax request fireing every 3 sec


}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top