使用 Ajax 和 Dojo 轮询服务器

2024-01-12

我在用着道场xhrPost http://api.dojotoolkit.org/jsdoc/1.2/dojo.xhrPost发送 Ajax 请求
该调用由一个包装function sendRequest()

我现在要连续(每 3 秒)向服务器发送相同的 ajax Post
如何使用 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);
    };
};

Usage:

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

Usage:

var p = new Poll(function() {console.log("hi");}, 250);
p.start();
setTimeout(dojo.hitch(p, p.stop), 1000);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Ajax 和 Dojo 轮询服务器 的相关文章

随机推荐