Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不带任何参数的setInterval回调函数_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 不带任何参数的setInterval回调函数

Javascript 不带任何参数的setInterval回调函数,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有下面的脚本,它执行一次ajax调用,然后每秒钟对另一个url执行一次ajax调用。我实现了以下代码,但我想我无法修复这个回调问题来运行第二个函数 $(document).ready(function(){ ajaxSingleCall(function(){ ajaxCalls(); }); }); function ajaxSingleCall(){ $.ajax({ type: 'GET', url: "/matc

我有下面的脚本,它执行一次ajax调用,然后每秒钟对另一个url执行一次ajax调用。我实现了以下代码,但我想我无法修复这个回调问题来运行第二个函数

$(document).ready(function(){
    ajaxSingleCall(function(){
        ajaxCalls();
    });
});

function ajaxSingleCall(){
    $.ajax({
        type: 'GET',
        url: "/matchDataOdds",
        dataType: 'json'
        })
        .done(function(data) {
            data.forEach(addOddsCanvas);
        })
        .fail(function() {
            console.log("Ajax failed to fetch data");
        });
}

function ajaxCalls(){
    setInterval(runner, 1000);
}

function runner() {
    // run your ajax call here
    $.ajax({
    type: 'GET',
    url: "/matchData",
    dataType: 'json'
    })
        .done(function(data) {
            liveFeed(data);
        })
        .fail(function() {
            console.log("Ajax failed to fetch data");
        });
}

尝试从内部调用它
ajaxSingleCall()
。我在下面编辑了你的代码

$(document).ready(function(){
    ajaxSingleCall();
});

function ajaxSingleCall(){
    $.ajax({
        type: 'GET',
        url: "/matchDataOdds",
        dataType: 'json'
        })
        .done(function(data) {
            data.forEach(addOddsCanvas);
            ajaxCalls(); // <-- here
        })
        .fail(function() {
            console.log("Ajax failed to fetch data");
        });
}

function ajaxCalls(){
    setInterval(runner, 1000);
}

function runner() {
    // run your ajax call here
    $.ajax({
    type: 'GET',
    url: "/matchData",
    dataType: 'json'
    })
        .done(function(data) {
            liveFeed(data);
        })
        .fail(function() {
            console.log("Ajax failed to fetch data");
        });
}
$(文档).ready(函数(){
ajaxSingleCall();
});
函数ajaxSingleCall(){
$.ajax({
键入:“GET”,
url:“/MatchDataLobbits”,
数据类型:“json”
})
.完成(功能(数据){
数据。forEach(addOddsCanvas);

ajaxCalls();//尝试从内部调用它
ajaxSingleCall()
。我在下面编辑了您的代码

$(document).ready(function(){
    ajaxSingleCall();
});

function ajaxSingleCall(){
    $.ajax({
        type: 'GET',
        url: "/matchDataOdds",
        dataType: 'json'
        })
        .done(function(data) {
            data.forEach(addOddsCanvas);
            ajaxCalls(); // <-- here
        })
        .fail(function() {
            console.log("Ajax failed to fetch data");
        });
}

function ajaxCalls(){
    setInterval(runner, 1000);
}

function runner() {
    // run your ajax call here
    $.ajax({
    type: 'GET',
    url: "/matchData",
    dataType: 'json'
    })
        .done(function(data) {
            liveFeed(data);
        })
        .fail(function() {
            console.log("Ajax failed to fetch data");
        });
}
$(文档).ready(函数(){
ajaxSingleCall();
});
函数ajaxSingleCall(){
$.ajax({
键入:“GET”,
url:“/MatchDataLobbits”,
数据类型:“json”
})
.完成(功能(数据){
数据。forEach(addOddsCanvas);

ajaxCalls();//我强烈建议不要在AJAX中使用setInterval。如果服务器返回速度慢,您可以开始通过调用来重击服务器。如果使用“完成”或“完成”,服务器已尽可能快地返回

而是将运行程序放在ajaxSingleCall的完成部分,然后在运行程序的完成部分使用setTimeout

注意:您的代码失败,因为您没有在ajaxSingleCall中执行传递的回调

$(函数(){
ajaxSingleCall();//无论如何都不接受任何参数。。。
});
函数ajaxSingleCall(){
$.ajax({
键入:“GET”,
url:“/MatchDataLobbits”,
数据类型:“json”
})
.完成(功能(数据){
数据。forEach(addOddsCanvas);
跑步者();
})
.fail(函数(){
log(“Ajax无法获取数据”);
});
}
函数runner(){
//在这里运行ajax调用
$.ajax({
键入:“GET”,
url:“/matchData”,
数据类型:“json”
})
.完成(功能(数据){
liveFeed(数据);
设置超时(runner,1000);
})
.fail(函数(){
log(“Ajax无法获取数据”);
});

}
我强烈建议不要在AJAX中使用setInterval。如果服务器返回速度慢,您可以开始通过调用来重击服务器。如果使用“完成”或“完成”,则服务器已尽可能快地返回

而是将运行程序放在ajaxSingleCall的完成部分,然后在运行程序的完成部分使用setTimeout

注意:您的代码失败,因为您没有在ajaxSingleCall中执行传递的回调

$(函数(){
ajaxSingleCall();//无论如何都不接受任何参数。。。
});
函数ajaxSingleCall(){
$.ajax({
键入:“GET”,
url:“/MatchDataLobbits”,
数据类型:“json”
})
.完成(功能(数据){
数据。forEach(addOddsCanvas);
跑步者();
})
.fail(函数(){
log(“Ajax无法获取数据”);
});
}
函数runner(){
//在这里运行ajax调用
$.ajax({
键入:“GET”,
url:“/matchData”,
数据类型:“json”
})
.完成(功能(数据){
liveFeed(数据);
设置超时(runner,1000);
})
.fail(函数(){
log(“Ajax无法获取数据”);
});

}
ajaxCalls()将不会被调用,因为ajaxSingleCall函数不接受任何参数。

ajaxCalls()不会被调用,因为ajaxSingleCall函数不接受任何参数。

您正在将回调函数传递到
ajaxSingleCall
,但它不接受任何参数。您必须实际使用传递的函数。它不会被自动调用:

function ajaxSingleCall(callback){
    $.ajax({
        type: 'GET',
        url: "/matchDataOdds",
        dataType: 'json'
    })
    .done(function(data) {
        data.forEach(addOddsCanvas);
        callback();
    })
    .fail(function() {
        console.log("Ajax failed to fetch data");
    });
}

您正在将回调函数传递到
ajaxSingleCall
,但它不接受任何参数。您必须实际使用传递的函数。不会自动调用它:

function ajaxSingleCall(callback){
    $.ajax({
        type: 'GET',
        url: "/matchDataOdds",
        dataType: 'json'
    })
    .done(function(data) {
        data.forEach(addOddsCanvas);
        callback();
    })
    .fail(function() {
        console.log("Ajax failed to fetch data");
    });
}

但是仍然使用setInterval-不推荐与AjaxLead一起使用。我很高兴我可以帮助@VanshajBehl。请记住,如果我的回答有助于您解决问题,请接受我的回答。但是仍然使用setInterval-不推荐与AjaxLead一起使用@VanshajBehl。如果我的回答有助于您解决问题,请记住接受我的回答。谢谢您的建议,但是,为什么要这样做tTimeout over setInterval?如果服务器返回时间超过1秒,您将开始敲打它-在它忙于第一次呼叫时发出第二次呼叫,依此类推。感谢您的建议,但是setTimeout over setInterval的原因是什么?如果服务器返回时间超过1秒,您将开始敲打它-在它正忙于执行第一个任务,依此类推。这将解决即时问题,但不会处理服务器过载。这将解决即时问题,但不会处理服务器过载