我使用dojo.xhrPost來發送Ajax請求
的調用由function sendRequest()
投票使用Ajax和Dojo服務器
包裹我現在已經持續(3秒鐘每次)發送相同的AJAX發送到服務器
如何使用Dojo實現服務器輪詢?基本上,我需要調用sendRequest()
每3秒
我使用dojo.xhrPost來發送Ajax請求
的調用由function sendRequest()
投票使用Ajax和Dojo服務器
包裹我現在已經持續(3秒鐘每次)發送相同的AJAX發送到服務器
如何使用Dojo實現服務器輪詢?基本上,我需要調用sendRequest()
每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);
我發現它更好地做到這樣的:
這個程序的好處是,你可以很容易油門輪詢間隔,工作正常,當某些XHR操作超時,並且可以輕鬆實現投票請求的私有化。
要不斷更新網格,您可以將ajax請求包含在網格的「刷新完成」回調函數中。
yourGrid.on('dgrid-refresh-complete', function(event) {
//Ajax request fireing every 3 sec
}