@Hellas

Как выполнить функцию и продолжить выполнение кода?

define('login', function() {

  var	Login = {};

  Login.init = function() {

    var formEl = $('.login_form');
    var username = $('.login_username-input');
    var password = $('.login_password-input');
    var submitEl = $('.login_submit');

    username.on('blur', function() {
      if (username.val().length) {
        validateUsername(username.val());
      }
    });

    function validateUsername(username, callback) {
      callback = callback || function() {};
      if (!utils.isUserNameValid(username) || !utils.slugify(username)) {
        $('.header__login_form').addClass('username-break');
      } else {
        $('.header__login_form').removeClass('username-break');
        socket.emit('user.exists', {
          username: username
        }, function(err, exists) {
          if (err) {
            return app.alertError(err.message);
          }
          if (exists) {
            $('.login').removeClass('registration');
            $('.login').addClass('authorization');
          } else {
            $('.login').removeClass('authorization');
            $('.login').addClass('registration');
          }
          callback();
        });
      }
    };

    submitEl.on('click', function(e) {
      e.preventDefault();
      if (!username.val()) {
        username.focus();
        return
      } else if (!password.val()) {
        password.focus();
        return
      }
      validateUsername(); // Не выполнять дальше, пока не выполнится функция validateUsername
      if ($('.login').hasClass('registration')) {
        var ajaxUrl = '/registration'
      } else if ($('.login').hasClass('authorization')) {
        var ajaxUrl = '/authorization'
      }
      $(".login_submit").addClass('login_submit-accept');
      $.ajax(ajaxUrl, {
        type: 'post',
        data: $(".login_form").serialize(),
        headers: {
          'x-csrf-token': config.csrf_token
        },
        success: function(data, status) {
          location.reload();
        },
        error: function(data, status) {
          $(".login_submit").removeClass("login_submit-accept");
          $('.login_username-input').val('').focus();
        }
      });  
    });

  };

  return Login;
});


Как сделать, чтобы функция validateUsername выполнилась и только после этого продолжилось выполнение кода в submitEl.on('click')?
  • Вопрос задан
  • 143 просмотра
Пригласить эксперта
Ответы на вопрос 1
Rou1997
@Rou1997
Сделайте callback и в нем код после выполнения функции или используйте promise.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы