代码之家  ›  专栏  ›  技术社区  ›  AaronHS Joran Beasley

从setInterval函数获取返回值

  •  1
  • AaronHS Joran Beasley  · 技术社区  · 14 年前

    我有一个ajax函数,它被调用并返回json数据。此函数通过setInterval循环调用:

        function SetMaxBidReload() {
            var reloadInt = 6000;
            var doReload = true;
    
            //set some logic here
    
            if (doReload) {
                setInterval(function () { ReloadMaxBid(); }, reloadInt);
            }
        }
    
        function ReloadMaxBid() {
            var nextReload;
            $.ajax({
                url: 'ajaxcall.aspx',
                cache: false,
                success: function (data) {
                    //change to dom elemants here based on return data
                    nextReload = data[0].NextReload;
                }
            });
            return nextReload;
    
        }
    

    我要做的是根据ajax调用返回的内容更改setInterval的重载。

    a:有可能吗?b:我该怎么做?

    我对如何通过不同的编码来实现这一点的建议持开放态度

    1 回复  |  直到 14 年前
        1
  •  2
  •   Ivo Wetzel    14 年前

    setInterval 获取一次timeout参数,然后根据该时间间隔执行函数,更改 reloadInt 不会有任何效果。

    你需要使用 setTimeout 在成功回调中:

    function ReloadMaxBid() {
        $.ajax({
            url: 'ajaxcall.aspx',
            cache: false,
            success: function (data) {
                //change to dom elemants here based on return data
    
                var next = data[0].NextReload;
                if (next !== -1) {
                    setTimeout(function(){ReloadMaxBid();}, next);
                }
            }
        });
    }
    

    你还需要使用 设置超时 价值 6000 去一个能让事情开始的地方。