gpt4 book ai didi

php - jQuery setInterval 防止异步 ajax 调用

转载 作者:行者123 更新时间:2023-12-01 04:52:57 24 4
gpt4 key购买 nike

用户填写表单并单击“提交”,然后调用 utilsSubmit 函数。该函数设置一些变量,然后调用另一个开始读取文件的函数。如果该文件不存在,它只会输出“正在连接到设备...”。一旦文件存在,它应该将输出放入 div 中。

在循环过程中,我通过 ajax 运行另一个脚本来写入一个文件(与 readFile 脚本正在查找的文件相同。)

问题是,在 utilsSubmit 中的 ajax 调用完成之前,不会调用 readFile 函数。如果我删除 setInterval“包装器”并只运行 readFile 函数,它将起作用,但是,我需要它继续查找该文件,直到我告诉它停止(deadman 或文件中的某些字符串。)

我需要readFile函数立即触发并向浏览器输出数据。

function utilsSubmit(x){
var stuff = x;
file = "/path/to/file";
deadman = 1;

myTimer = setInterval(function() {
readFile(file);
}, 300);

$.ajax({
type: "POST",
url: "write_file.php",
data: {
"file": file
},
success: function(data) {
$("#networkUtils").html(data);
}
});
};

function readFile(x) {
var file = x;
$.ajax({
type: "POST",
url: "read_file.php",
data: {
"file": file
},
success: function(data) {
$("#networkUtils").html(data);
if (data.indexOf("END OF FILE")) {
clearInterval(myTimer);
}
}
});
if (deadman >= 1000) {
clearInterval(myTimer);
}
deadman++;
}

编辑 - 按照建议尝试 setTimout
然而,现在的问题是我无法退出循环。如果我尝试将 setTimeout 结果设置为 var,然后基于某种逻辑对该 var 进行clearTimeout,则该函数仅第一次运行(它不会循环。)

更新的代码:

function utilsSubmit(x){
var name = x;
file = "/path/to/file";
deadman = 1;

var myTimer;
readFile(file);

// AJAX Call to Write to file...
};

function readFile(x) {
var file = x;
$.ajax({
type: "POST",
url: "read_file.php",
data: {
"file": file
},
success: function(data) {
$("#networkUtils").html(data);
if (data.indexOf("END OF FILE")) {
clearInterval(myTimer);
}
}
});
if (deadman >= 1000) {
clearInterval(myTimer);
}
deadman++;
myTimer = setTimeout(function(){
readFile(file);
}, 300)
}

最佳答案

如果我理解正确,问题就在这里:

if (data.indexOf("END OF FILE")) {
clearInterval(myTimer);
}
如果未找到该字符串,

indexOf 返回-1-1 是“真实”。 clearInterval 唯一不会运行的情况是 indexOf 返回 0,这意味着“END OF FILE”是第一个字符。我假设你想在任何地方找到“END OF FILE”时退出,在这种情况下应该是这样的:

if (data.indexOf("END OF FILE") != -1) {
clearInterval(myTimer);
}

关于php - jQuery setInterval 防止异步 ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17365715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com