Не записывается переменная success ajax

Подскажите пожалуйста, почему не записывается переменная из success ajax:

function check() {
  var mail_check;
  $.ajax({
    type: "POST",
    url: "/mail_check.php",
    data: {
    },
    success: function(html) {
      mail_check = 1;
    }
  });
  if (mail_check === 1) {
  /*code*/
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="button" onclick="check();" value="go">


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

Автор решения: Igor

Асинхронность.

  ...
  success: function(html) {
    mail_check = 1;
    console.log("success", mail_check); 
  },
  complete: function() {
    console.log("complete", mail_check); 
    if (mail_check === 1) {
      /*code*/
    }
  }
});
→ Ссылка
Автор решения: Vadim

Либо банально добавь в код ажакса async: false,, либо снизу человеческий способ

В начале(на 1 строке) файла, который с функцией

const apost=(_url, _data={})=>{
    return new Promise((resolve)=>{
        $.ajax({
            url: _url,
            type: 'POST',
            data: _data,
            async: true,
        }).done((r)=>{
            if(!r)r = false;
            resolve(r);
        }).catch((e)=>{
            console.log(e.status, e.responseText, e);
            resolve(false);
        });
    });
};

В своей функции вызываешь:

(async()=>{
    let r = await apost('/mail_check.php', {data: 'yes'});

    console.log('response', r);
})();

асинхронная функция выглядит\создается так:

const func_name=async()=>{ /* code */ };
→ Ссылка
Автор решения: Владислав Самохин

function check() {
  var mail_check;
  $.ajax({
    type: "POST",
    async: false,
    url: "/mail_check.php",
    data: {
    },
    success: function(html) {
      mail_check = 1;
    }
  });
  if (mail_check === 1) {
  /*code*/
  }
}

→ Ссылка