Я пытаюсь добиться следующего:
У меня есть 3 APIS для вызова для получения данных:
- первый API запускает задание для получения данных и возвращаетидентификатор для него
- второй API информирует меня о состоянии задания (выполнено, отменено ...), мне нужно выполнить несколько вызовов этого API, прежде чем я смогу вызвать следующий.
- третий API - это тот, который отправляет мне данные обратно, когда задание завершено.
У меня проблема с использованием второго API, я не могу отправить данные обратно в мою программу, вот мой код:
function getJobId(token) {
return $.ajax({
url: "url" + token;
});
}
function getJobStatus(job_id) {
var url = "url" + job_id;
return $.ajax({
url: url
});
}
getJobStatus(job_id).then(function(response) {
if (response.jobrun_status === "QUEUED" || response.jobrun_status === "INPROGRESS") {
//setTimeout(recursiveJobIdCheck(job_id), 2000);
recursiveJobIdCheck(job_id);
} else {
console.log(response.jobrun_status);
return response.jobrun_status;
}
});
Я пытался установить таймаут между каждым вызовом второго API, но безуспешно, может кто-нибудь объяснить мне, как я могу добиться этого, сохраняя интервал междукаждый запрос вызывается до тех пор, пока работа не будет завершена.
Заранее спасибо.
Редактировать: я забыл добавить функцию recursiveJobIdCheck, вот она
function recursiveJobIdCheck2(job_id) {
return new Promise((resolve,reject) => {
getJobStatus(job_id).then(function(response){
if(response.jobrun_status === "QUEUED" || response.jobrun_status === "INPROGRESS"){
//setTimeout(recursiveJobIdCheck(job_id), 2000);
recursiveJobIdCheck2(job_id);
}
else{
if(response.jobrun_status === "COMPLETED"){
console.log(response.jobrun_status);
resolve(response.jobrun_status);
}
else{
reject(response.jobrun_status);
}
}
});
});
}
вызовыAPI продолжать работать все время бытьдо его завершения, когда я возвращаю значение через функцию Resolve, в основной программе внутри блока .then ничего не происходит