powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Вернуть значение в if после ajax запроса
6 сообщений из 6, страница 1 из 1
Вернуть значение в if после ajax запроса
    #39595784
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть функция которая делает запрос ajax:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
let Ajax = function (url, data) {
        $.ajax({
            type: 'POST',
            url: url,
            data: data,
            dataType: 'json',
            success: function(result) {
                let deferred = $.Deferred();
                deferred.resolve(result);
                return deferred.promise();
            },
            complete: function () {},
            error: function (jqXHR) {

            }
        })
    };



Есть условие:

Код: javascript
1.
2.
3.
4.
5.
if(getAction().isUser()) {
    ...
} else {
    ....
}



Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
function Action() {
      ....

        this.isUser = function () {
            return $.when(Ajax(getServer() + 'check', {}).then(function (result) {
                console.log('RESULT');
                return result.isUser;
            }));
        };
      .....
}



Но вот проблема в том что в условие приходит false и код идет дальше, а then срабатывает позже.
Что я делаю не так подскажите пожалуйста.
...
Рейтинг: 0 / 0
Вернуть значение в if после ajax запроса
    #39595792
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самое простое - использовать callback-и.

Самое правильное - использовать Promise-ы.

"Последний писк" - использовать с промисами async/await. Код становится простым до дерзости.

Это с калбеками
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
let fn_IfIsUser =function(){
//Тут то, если это юзер
}

let fn_IfIsNotUser =function(){
//Тут то, если это НЕ юзер
}

        this.isUser = function (fn_IfIsUser, fn_IfIsNotUser  ) {
            return $.when(Ajax(getServer() + 'check', {}).then(function (result) {
                console.log('RESULT');
                return result.isUser ? fn_IfIsUser() :  fn_IfIsNotUser(); 
            }));
        };
...
Рейтинг: 0 / 0
Вернуть значение в if после ajax запроса
    #39595798
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Агнец за бортом,

с callback я знаю. Но хотел перейти так сказать на новый уровень.

Не подскажете как с Promise сделать?
...
Рейтинг: 0 / 0
Вернуть значение в if после ajax запроса
    #39595848
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Вернуть значение в if после ajax запроса
    #39596058
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,

что-то Вы нагородили. Похоже Вы не в курсе, что $.ajax возвращает deferred.
...
Рейтинг: 0 / 0
Вернуть значение в if после ajax запроса
    #39596234
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklopс callback я знаю

похоже что нет. для начала надо научиться работать с callback, или хотя бы понимать как это работает на базовом уровне.

потом уже можно и


Tsyklopтак сказать на новый уровень



а то мы хотим каких-то новых уровней, не понимая базовых вещей.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Вернуть значение в if после ajax запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]