Lion_astana, ответ на ваш начальный вопрос... Поскольку ваша функция func2 возвращает булево значение, то вы её результат можете использовать в цикле while
<button id="btn">Click me</button>
<p id="info"></p>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
const button = $("#btn");
const info = $("#info");
button.on("click", func1);
async function func1() {
button.prop("disabled", true);
info.text("");
while(await func2()) {
info.append("true ");
}
info.append("end");
button.removeAttr("disabled");
}
async function func2() {
try {
/* микросервис, который возвращает false в 25% случаев и true — 75% */
const answer = await $.get("https://charm-launch.glitch.me/random/boolean/0.25");
return answer;
} catch(error) {
/* если произойдёт ошибка, то возможно вы её захотите обработать как-то по другому */
return false;
}
}
</script>