javascript变量被多个函数调用覆盖
我有下面的函数来检查文件的存在。 它被依次调用了4次,检查不同的文件。 它对第一个文件可以正常工作,但对后续文件不起作用。 我想这一定是因为局部/全局变量的位置,但我无法理解。。。有什么想法吗javascript变量被多个函数调用覆盖,javascript,Javascript,我有下面的函数来检查文件的存在。 它被依次调用了4次,检查不同的文件。 它对第一个文件可以正常工作,但对后续文件不起作用。 我想这一定是因为局部/全局变量的位置,但我无法理解。。。有什么想法吗 <script> function checkfile(fileNamePassed){ var timerForLoadingResult=setInterval( function() { checkServerForFile(fileNamePassed); }, 4000
<script>
function checkfile(fileNamePassed){
var timerForLoadingResult=setInterval( function() { checkServerForFile(fileNamePassed); }, 4000 );
function checkServerForFile(fileNamePassed) {
$.ajax({
url: 'https://myserver.com/'+fileNamePassed+'.txt',
type:'HEAD',
error: function()
{
},
success: function()
{
$("#"+fileNamePassed).hide();
clearInterval(timerForLoadingResult)
}
});
}
}
</script>
函数检查文件(fileNamePassed){
var timerForLoadingResult=setInterval(函数(){checkServerForFile(fileNamePassed);},4000);
函数checkServerForFile(fileNamePassed){
$.ajax({
网址:'https://myserver.com/“+fileNamePassed+.txt”,
类型:'头',
错误:函数()
{
},
成功:函数()
{
$(“#”+fileNamePassed.hide();
清除间隔(timerForLoadingResult)
}
});
}
}
从checkfile
中删除您的checkServerForFile
,并将引用传递给
调用checkServerForFile时的timerForLoadingResult
我编辑了我的答案,以反映一些真实的数据,因为我没有后端,但概念是一样的
删除timerForLoadingResult
的依赖项并将其作为引用传递,将迫使checkServerForFile
使用其引用值,而不是它们都共享相同的timerForLoadingResult
由于setInterval
返回一个ID
,您可能还需要更改timerForLoadingResult
的名称
从:
它返回唯一标识该间隔的间隔ID,因此您可以稍后通过调用clearInterval()将其删除
功能检查文件(idPassed){
var timerForLoadingResult=setInterval(函数(){
checkServerForFile(idPassed、timerForLoadingResult);
}, 4000);
}
函数checkServerForFile(idPassed、TimerForLoadInResult){
$.ajax({
网址:'https://api.github.com/users/justinjmnz',
错误:函数(){
},
成功:功能(数据){
console.log(idPassed+“found!”);//找到了您的文件
$(“#”+idPassed).append(“”);
清除间隔(timerForLoadingResult)
}
});
}
检查文件(“foo”);
支票文件(“bar”);
检查文件(“foobar”)代码>
您发布的代码不会重现问题。请创建一个。当您将checkServerForFile(fileNamePassed)函数从checkFile(fileNamePassed)函数的作用域中取出时会发生什么情况?@daddygames-当场-这就成功了。。。非常感谢您的快速回复/提示:-@Jack不客气。快乐编码。