Javascript 不带任何参数的setInterval回调函数
我有下面的脚本,它执行一次ajax调用,然后每秒钟对另一个url执行一次ajax调用。我实现了以下代码,但我想我无法修复这个回调问题来运行第二个函数Javascript 不带任何参数的setInterval回调函数,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有下面的脚本,它执行一次ajax调用,然后每秒钟对另一个url执行一次ajax调用。我实现了以下代码,但我想我无法修复这个回调问题来运行第二个函数 $(document).ready(function(){ ajaxSingleCall(function(){ ajaxCalls(); }); }); function ajaxSingleCall(){ $.ajax({ type: 'GET', url: "/matc
$(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秒,您将开始敲打它-在它正忙于执行第一个任务,依此类推。这将解决即时问题,但不会处理服务器过载。这将解决即时问题,但不会处理服务器过载