Как прервать ВСЕ оставшиеся функции, если условие ложно / ноль - PullRequest
0 голосов
/ 08 января 2020

В моем файле запущено несколько сценариев ajax, чтобы проверить, существует ли пользователь, а затем создать пользователя. Цель состоит в том, чтобы просто проверить, существует ли пользователь из первого вызова ajax, а затем во втором вызове создать пользователя, если он не существует.

Эта функция ajax .done для условия userCheck_settings возвращает правильно и проверяет, имеет ли ответ значение null, если да, возвращает false. Однако следующая функция createUser все еще выполняется. Можно ли прервать ALL оставшихся функций?

function checkUser(responseToken) {

        $('.btn').click(function () {

            const Url = 'https://cors-anywhere.herokuapp.com/https://staging.micromerchantsystems.com/mmsgatewayapistaging/api/patient/search';

            var user_firstName = $("#first_name").val();
            var user_lastName = $("#last_name").val();
            var user_dob = $('#date_of_birth').val();

            const userCheck = {
                "RequestingClient": {
                    "ClientId": "***********",
                    "MemberId": "***********"
                },
                "Pharmacy": {
                    "IdentifierType": 2,
                    "Identifier": "5164086800"
                },
                "LastName": user_lastName,
                "FirstName": user_firstName,
                "DOB": "04/27/1901",
                "MobileNumber": "123456789",
            };

            var userCheck_string = JSON.stringify(userCheck);

            var userCheck_settings = {
                "async": true,
                "crossDomain": true,
                "url": Url,
                "method": "POST",
                "headers": {
                    "Content-Type": "application/json",
                    "Authorization": "Bearer " + responseToken,
                    "Accept": "*/*",
                },
                "data": userCheck_string
            }

            $.ajax(userCheck_settings).done(function (response) {

                if (response.Patients == null) {
                    console.log('Reponse is null! ' + response.Patients);
                    return false;
                    console.log('This does not show');
                } else {
                    console.log('Response is NOT null! Last Name is: ' + response.Patients[0].LastName);
                }

            });
        });
    }



function createUser(responseToken) {
        $('.btn').click(function () {
          console.log('I dont want this to run');
        });
    }

1 Ответ

1 голос
/ 08 января 2020

При вызове обеих ваших функций (checkUser и createUser) добавляется один и тот же прослушиватель событий click для элементов с классом .btn css:

$('.btn').click(function () {
     //...
}

Я полагаю, вы иметь этот css класс на кнопке, но независимо от того, когда вы нажимаете на него, оба блока кода внутри каждого обработчика события щелчка выполняются практически одновременно. Другими словами, сами функции checkUser и createUser НЕ вызываются напрямую, а, скорее, код внутри обработчиков событий. Если вы хотите создать createUser только тогда, когда пользователя не существует, я бы предложил вызвать функцию createUser из логи c, которая сообщает вам, что пользователя не существует, например:

// truncated for brevity .......
 $.ajax(userCheck_settings).done(function (response) {

            if (response.Patients == null) {
               //create user function call from here
               //I'm not sure what the responseToken parameter should be but this is just an example
                createUser(responseToken);
                return false;
                console.log('This does not show');
            } else {
                console.log('Response is NOT null! Last Name is: ' + response.Patients[0].LastName);
            }

        });
  //truncated for brevity .......

 //then the createUser function
 function createUser(responseToken) {
   //removed click event listener
   //write your code to create user here
}

Обратите внимание, что событие click обработчик должен быть удален из функции createUser.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...