1
我正在检查服务器,如果工作完成。我不想垃圾邮件的服务器,所以这就是为什么我会使用setInterval。Javascript jQuery然后在区间
我调用触发器函数,并在服务器上完成作业(可能在完成之前调用2-3次调用)后,该函数完成。
我知道我可以在间隔时间内调用我的finishFunction,并且可以解决它。但我想返回它,因为我从另一个js文件调用触发器函数。如果可能的话,我想在那里处理。
function trigger() {
var response = startInterval();
response.then(function() {
//done finishFunction()
});
}
function checkServer() {
var obj = { test: true }
var respons = $.ajax({
url: "MyUrl",
data: JSON.stringify({ obj: obj }),
type: "POST",
contentType: "application/json",
dataType: "JSON",
cache: false
});
return respons;
}
function startInterval() {
var inProgress = false;
var interval = setInterval(function() {
if (!inProgress) {
inProgress = true;
var response = checkServer().then(function (data) {
var isDoneInQueue = JSON.parse(data.d);
if (isDoneInQueue) {
//finishFunction()???
clearInterval(interval);
return response;
};
inProgress = false;
});
}
}, 1000);
}
是否存在与代码有关的特定问题? –
我的问题是当我打电话给startInterval我的回报不是我的回应。而且我知道这是因为该功能在得到我的回应之前已经过了。正如我所说,我可以在“isDoneInQueue”中调用一个函数。但下面的解决方案解决了我的问题。 – thatsIT