小编典典

setInterval和Ajax

ajax

当我使用setIntervalajax从数据库中检索数据时,如果我从数据库中检索到的数据等于saveHere,则会出现此问题,它将再次循环直到与变量saveHere不匹配,它将冻结浏览器直到数据我检索到的结果不等于saveHere。

这是一个例子:

var saveHere = 'RED';
var interval = setInterval(function() {

    var sample = $.ajax({
        type: 'GET',
        url: 'database.php',
        data : data
    }).responseText;

    if (sample != 'RED') {
        clearInterval(interval);
        saveHere = sample;
    }
    else {
        console.log('load again');
    }

},1000);

我真的需要建议。先感谢您。对不起,语法。


阅读 253

收藏
2020-07-26

共1个答案

小编典典

我不知道确切的情况或要实现的目标,但是我说您进行AJAX调用的方式非常危险,因为它有可能每秒不断地发出请求,而不管服务器是否有机会做出回应。

我很想一次只提出一个请求,例如:

var saveHere = 'RED';
makeAjaxCall();

function makeAjaxCall() {
    var url = 'database.php';
    var data = {};
    $.get(url, data, function(response_text){
        if (response_text != 'RED')
        {
            saveHere = response_text;
            // do whatever else you need...
        }
        else
        {
            // make another call...
            console.log('calling again...');
            makeAjaxCall();
        }
    }, "text");
}
2020-07-26