Как использовать возвращаемое значение функции JavaScript для проверки в другой функции [дубликат]Jquery

Программирование на jquery
Ответить
Anonymous
 Как использовать возвращаемое значение функции JavaScript для проверки в другой функции [дубликат]

Сообщение Anonymous »


У меня есть одна функция, которая вызывается onSubmit формы и проверяет, имеет ли изображение, которое я хочу загрузить, необходимое соотношение. Если изображение имеет соотношение сторон, оно допускает обработку. В противном случае этого не произойдет. Проблема возникает, когда моя функция hasRatio длится несколько секунд, я получаю «не определено» вместо «ИСТИНА» или «ЛЮБОЕ СООБЩЕНИЕ». Я пытался использовать PROMISE, но не знаю, как с этим справиться. Подскажите, пожалуйста, что не так с моим кодом?

Вот мои функции:

$('.form-assync').submit(function (e) { е.preventDefault(); пусть $e = $(это); пусть $formClasses = $e.attr('класс'); пусть $x = $formClasses.split(' '); if ($x.indexOf('wait') !== -1) { //Отображение ошибки здесь } еще { let $image = document.getElementById("изображение"); if (($image != null && $image.files.length !== 0)) { //специальная проверка изображений с соотношением сторон let $imageClasses = $('#image').attr('class'); пусть $allowProcessing = false; if ($imageClasses.indexOf('with-ratio') !== -1) { //проверяем, имеет ли изображение необходимое соотношение пусть проверка = async () => { $allowProcessing = ждут hasRatioOne(); вернуть $allowProcessing; } проверка().then(функция (текст) { $allowProcessing = текст; //возвращаем TRUE или любое сообщение об ошибке }); } еще { $allowProcessing = правда; } //Обрабатывать или нет if ($allowProcessing !== true) { Оповещение ($allowProcessing); вернуть ложь; //остановим отправку формы } //Здесь делаем вызов AJAX с индикатором выполнения } еще { //Выполняем вызов AJAX без индикатора выполнения } вернуть ложь; } }); функция hasRatioOne() { вернуть новое обещание (функция (решить) { /* Здесь я буду выполнять задачи, чтобы проверить, имеет ли изображение соотношение и задачи длятся несколько секунд */ let $error = "У вашего изображения нет соотношения сторон"; setTimeout(функция () { разрешить ($ ошибка); }, 1000); }); } функция hasRatioTwo(){ вернуть истину; //функция вообще не длится долго } Я также пытался использовать обратный вызов, но результат всегда приходит после всплывающего оповещения

функция hasRatioThree(обратный вызов){ let $error = "У вашего изображения нет соотношения сторон"; setTimeout(функция () { обратный вызов ($ ошибка); }, 1000); } hasRatioThree (функция (результат) { разрешитьОбработка = результат; }); Как видите, если я использую «hasRatioTwo», у меня нет проблем, но когда я использую «hasRatioOne», у меня появляется «неопределенное».

Заранее благодарим за помощь.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»