Я проверяю сервер, если работа выполнена. Я не хочу спамить сервер, поэтому я буду использовать setInterval.Javascript jQuery затем в интервале
Я вызываю функцию триггера, и когда задание выполняется на сервере (возможно, 2-3 вызова до его завершения), функция выполняется.
Я знаю, что могу назвать свою финишную функцию в промежутке и решить ее. Но я хотел бы вернуть его, потому что я вызываю функцию триггера из другого 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