Добрый день, возник вопрос, который я не могу решить своими силами. Есть скрипт:
'use strict';
var btn = $('.form_submit');
function AJAX() {
return new Promise(function(resolve, reject){
$.ajax({
type: "POST",
url: "/get_building",
data: $('form').serialize(),
type: 'POST',
success: function(response) {
var json = jQuery.parseJSON(response); //Прочитать ответ сервера
var resp_list = json.resp; //массив с ключем par_buld_resp (из функции get_building main.py)
console.log(`Это resp_list ${resp_list}`);
resolve(resp_list);
},
error: function(error) {
console.log(error);
reject(error);
}
});
})
}
async function checkForm() {
let promise = await AJAX();
var title = $('.add_building_form').val();
console.log(`это промис ${promise}`);
console.log(`это title ${title}`);
return(false);
}
$(document).ready(function(){
btn.click(function(){
let answer = checkForm();
console.log(`Это answer ${answer}`);
if(answer==false) {
return false;
}
else
return false;
//{form.submit();}
})
})
который при клике по кнопке запускает функцию checkForm. Та в свою очередь запускает другую функцию, которая через AJAX обращается к бд и проверяет, есть ли уже запись в БД с таким названием. checkForm принимает промис от функции AJAX в котором либо old (то есть запись уже есть), либо new - если записи нет, а так же проверяет введенную строку (пока не реализовал) и возвращает промис (пока только false). В функциях расставлены логи, вот вывод:
Это answer [object Promise]
Это resp_list Old
это промис Old
это title 123
Из всего этого становится понятно, что основная анонимная функция, которая ждет нажатия на кнопку не ждет пока checkForm выполнится. Вопрос: как сделать анонимную функцию асинхронной?
если я делаю так:
btn.click(async function(){
let answer = await checkForm();
....
выскакивает ошибка интерпретатора uncaught exception: Object