Как вывести ответ при клике наружу функции на js

<!DOCTYPE html>
<html>
<head>
</head>
<body>
 <button id="btn">Go</button>

<script>

 let btn = document.getElementById('btn');

 let go = 0;

 btn.addEventListener('click', () => {

    go = 1;
    console.log(go); // 1

});


console.log(go); // 0
//Нужно чтобы выводился один

</script>

</body>
</html>

Ответы (1 шт):

Автор решения: Pavel Grishaev

Это не возможно. Потому что клик по кнопке и единица случатся потом, а последний лог случается сразу. Если нужна единица, то дальше код нужно писать внутри. Так работает асинхронный код.

Но если очень нужно писать это как обычно пишется синхронный код, то можно воспользоваться асинхронными функциями.

Лог сработает один раз после клика по кнопке:

(async ()=>{
  let btn = document.getElementById('btn');
  let go = 0;

  await new Promise( resolve => {
    btn.addEventListener('click', resolve );
  });
  
  go = 1;
  console.log(go);
})();
<button id="btn">Go</button>

→ Ссылка