Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.02.2013, 10:09
Интересующийся
Отправить личное сообщение для 9112 Посмотреть профиль Найти все сообщения от 9112
 
Регистрация: 01.06.2012
Сообщений: 25

результат при вызове своей функции
ситуация много раз поднимавшаяся, но решения, или твердого ответа о его невозможности я не встретил. и так, цель - своя функция, при вызове которой происходит ajax запрос на сервер, далее в success выполняется условие, и в итоге возврат true or false. не должно быть никаких таймеров и запрос должен быть асинхронным.
грубо это можно было бы представить как
function testAuthen(){
    var status=new Rt();
    $.ajax({
        type:"GET",
        url:"auth/verify.php",
        success:function(data){
            if (blabla){
                status.set(true);
            }else if(blabla2){
                status.set(false);
            }
        }
    });     
    return status.get();
}

по понятным причинам это работать не будет и функция у нас будет возвращать undefined.
есть ли какой способ выкрутиться, и добиться желаемого результата?
Ответить с цитированием
  #2 (permalink)  
Старый 07.02.2013, 10:55
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

собствено тут два Варианта
1. В конце success Вызывать общую фунцию завершения обработки, которая анализирует результаты и управляет дальнейшими Аякс действиями
2. Либо вызывать событие по завершении success (к примеру программный клик по скрытой кнопке). В функции обработки события и отслеживать результаты запросов и управлять дальнейшими.
Ответить с цитированием
  #3 (permalink)  
Старый 07.02.2013, 11:21
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от 9112
или твердого ответа о его невозможности я не встретил
нельзя добиться желаемого Вами
Причина в том что получить ответ Вы пытаетесь сразу(синхронно)когда ответ сервера неизвестен а он придет через некоторое время-асинхронно
Ответить с цитированием
  #4 (permalink)  
Старый 07.02.2013, 12:44
Интересующийся
Отправить личное сообщение для 9112 Посмотреть профиль Найти все сообщения от 9112
 
Регистрация: 01.06.2012
Сообщений: 25

спасибо за ответы. не буду чесать там, где не чешется унификация здесь не удастся
Ответить с цитированием
  #5 (permalink)  
Старый 11.02.2013, 17:29
Аватар для keen
Профессор
Отправить личное сообщение для keen Посмотреть профиль Найти все сообщения от keen
 
Регистрация: 28.03.2012
Сообщений: 376

ну дык это,.. выставь async: false в параметрах $.ajax
конечно, решение не универсальное
Ответить с цитированием
  #6 (permalink)  
Старый 11.02.2013, 17:50
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от keen Посмотреть сообщение
ну дык это,.. выставь async: false в параметрах $.ajax
конечно, решение не универсальное
Это ничего не меняет-задержка времени все равно будет
ему нужно чтобы его функция что то возвратила return status.get();

Последний раз редактировалось vadim5june, 11.02.2013 в 17:58.
Ответить с цитированием
  #7 (permalink)  
Старый 11.02.2013, 17:57
Аватар для keen
Профессор
Отправить личное сообщение для keen Посмотреть профиль Найти все сообщения от keen
 
Регистрация: 28.03.2012
Сообщений: 376

Сообщение от vadim5june Посмотреть сообщение
Это ничего не меняет-задержка времени все равно будет
ну ясен пень будет, клиенты ещё не научились со стопроцентной гарантией угадывать что ответит сервер.

вопрос-то в том как сделать асинхронную функцию синхронной, если я правильно понял.
Ответить с цитированием
  #8 (permalink)  
Старый 11.02.2013, 18:01
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от keen
вопрос-то в том как сделать асинхронную функцию синхронной, если я правильно понял.
нет ему нужно чтоб его функция что то вернула-он не хочет callback использовать
Ответить с цитированием
  #9 (permalink)  
Старый 11.02.2013, 18:05
Аватар для keen
Профессор
Отправить личное сообщение для keen Посмотреть профиль Найти все сообщения от keen
 
Регистрация: 28.03.2012
Сообщений: 376

Сообщение от vadim5june Посмотреть сообщение
нет ему нужно чтоб его функция что то вернула-он не хочет callback использовать
а как по-вашему называется функция, выполняющаяся некоторое время и возврающая результат командой return безо всяких коллбеков? не синхронная, не?
Ответить с цитированием
  #10 (permalink)  
Старый 11.02.2013, 18:09
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от keen Посмотреть сообщение
а как по-вашему называется функция, выполняющаяся некоторое время и возврающая результат командой return безо всяких коллбеков? не синхронная, не?
Она синхронная но ничего не возвратит
Его пример гляньте
он там пишет
и запрос должен быть асинхронным.
так что Ваш вариант повсей видимости неподходит

Последний раз редактировалось vadim5june, 11.02.2013 в 18:15.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подружить два скрипта (скроллер+скрипт эффекта при наведении) Che jQuery 26 29.08.2012 10:59
Объясните пожалуйста как обратится к функции и получить результат zeraid AJAX и COMET 4 03.04.2011 14:55
Результат JS функции предать в RoR метод axon Серверные языки и технологии 0 23.02.2011 19:30
Специфические функции и свойства различных браузеров onejsquestion Javascript под браузер 3 28.06.2010 10:54
Неверный результат в AJAX с получением HTML Raynor AJAX и COMET 3 17.12.2008 18:38