Как реализовать обещание с пользовательской функцией?

Я пытаюсь научиться использовать обещание.

Что запускает событие и обновляет страницу

Я использую это ниже, чтобы вызвать мое событие и обновить страницу;

$("body").on("change", "input, select", function () {
var field_id = ($(this).attr("id"));
var container = ['#' + field_id + "_ck", '#' + field_id + '_err'];
var data_type = ($(this).attr("data-type"));
var value = document.getElementById(field_id).value;
var data = validateInput(field_id, data_type, value);

if (data[0] == 'true') {
$(container[1]).addClass("pass_f");
$(container[1]).html(data[2]);
$(container[0]).html(data[1]);
}else {
$(container[1]).removeClass("pass_f");
$(container[1]).addClass("err_f");
$(container[1]).html(data[2]);
$(container[0]).html(data[1]);
}
});

Что делает validateInput ()

Функция validateInput возвращает массив данных для пользователя, чтобы исправить информацию и его следующим образом;

function validateInput(field_id,data_type,value){
var a = 0;
var b = 1;
var c = 2;
var data = [];
if (data_type == 'username'){
n = value.length;
if(n < 5 | n > 15){
data[a] = "false";
data[b] = "some html";
data[c]  = "The error msg regarding this field length";
return data;
}
// the code below would fit here
}

Теперь в чем моя проблема

Эта функция db_check запускается после обновления страницы

function db_check(field_id, data_type, value, callbackFn) {
$.ajax({
url: 'ajax-php.php',
type: 'post',
dataType: 'json',
data: { 'db_check': 'true', 'field_id': field_id, 'value': value, 'data_type': data_type },
success: function (data2, status) {
callbackFn(data2);
// data2 is true or false
},
// in case of error
}
});
};

А потом, когда я использую эту функцию db_check

 db_check(field_id, data_type, value, function callbackFn(data2){
if (data2 == 'false') {
data[a] = "false";
data[b] = "some html";
data[c] = "its not ok";
return data;
}
else if (data2 == 'true') {
data[a] = "true";
data[b] = "some html";
data[c] = "Its ok.";
return data;
}
});

Как мне реализовать обещание в моем коде

Массив данных заполняется правильными значениями только после обновления страницы. Так что мне интересно, где обещание должно быть?

Должен ли он идти с validateInput вместо этого? лайк;

Я так растерялся во всем этом и был бы очень признателен, чтобы хотя бы понять, как использовать обещание.

пожалуйста, обратите внимание

все данные, возвращаемые этой функцией, уже являются массивами json. Я заметил, что во всей документации, которую они используют, JSON ведьма уже реализована в моем коде

Спасибо!

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]