Вам нужно обновить переменную монитора, а не просто повторный анализ.У вас была правильная идея, просто нужно было пойти дальше
Кроме того, я переместил вас в setInterval из цикла while, чтобы вы могли запускать вещи в цикле с автоматической синхронизацией, «правильном» способе сделатьэто
let monitor = await Service.monitor(session,taskId);
let percent = JSON.parse(monitor).result[0].data.percent;
let tryCount = 0;
let tryMax = 10;
setInterval(function(){(percent < 100 || tryCount < tryMax) {
if(percent < 100 || tryCount < tryMax){
monitor = await Service.monitor(session,taskId);
let percent = JSON.parse(monitor).result[0].data.percent;
tryCount++;
console.log('in a while loop ',tryCount, percent);
if(tryCount == 10){
var err = new Error('Error')
throw err
}
}else{
clearInterval(this);
}
},5000)
И я предполагаю, что вы как-то перезагружаете monitor
, потому что даже если вы повторно проанализируете его, если это соединение на другом сервере, вам придется его перезагрузить.