Javascript.RU

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

Передача ответа из get запроса в объект
Добрый день. Есть задача каждые 2 секунды отправлять запрос к определённому файлу и в зависимости от ответа продолжать отправлять запрос или выполнить другое действие. Ответ может быть "Y" или "N". Проблема в том, что не могу обратиться к ответу запроса из функции в setinterval, код ниже:
function State(requestId) {
    this.requestId = requestId;
    this.status = "N";
    this.getState = function() {
        $.get($("#b_page_toursearch input[name=TEMPLATE_FOLDER]").val() + "/ajax.php",
            {
                ACTION      : "GET_STATE",
                requestId   : this.requestId
            },
            function(data){
                return data;
            }
        );
    };
}
$(document).ready(function(){
    var state_request = new State(requestId);
    var intervalID = setInterval(function(){
        if(state_request.status == "N"){
            state_request.getState();
        }else{
            clearInterval(intervalID);
        }
    },2000);
})
Ответить с цитированием
  #2 (permalink)  
Старый 07.02.2014, 10:33
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от evil0790
Проблема в том, что не могу обратиться к ответу запроса из функции в setinterval
А если ответа еще нет, то как ты его получишь? Запрос может затянуться, скажем, на несколько секунд (проблемы с сетью например).
Используй setTimeout вместо setInterval, дожидайся ответа, а там уже действуй как знаешь.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 07.02.2014, 11:21
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,719

Сообщение от evil0790
Проблема в том, что не могу обратиться к ответу запроса из функции в setinterval, код ниже:
Можете. Вместо бинарной юзайте тернарную логику. status = null; Ответ сервера может изменить значение на N или Y. Именно по отличию от null скрипт "понимает" что ответ пришел и принимает то или иное решение. Пока null - выходит на следующий тик и ждет, и ждет, и ждет... дождались, выполнили поручение, status=null и по кругу.
Ответить с цитированием
  #4 (permalink)  
Старый 07.02.2014, 17:14
Новичок на форуме
Отправить личное сообщение для evil0790 Посмотреть профиль Найти все сообщения от evil0790
 
Регистрация: 20.09.2010
Сообщений: 7

Спасибо за наводку с таймаутом, действительно, погорячился я с интервалом, реализовал просто вызовом самой функции из себя с таймаутом в зависимости от ответа.
Ответить с цитированием
  #5 (permalink)  
Старый 07.02.2014, 17:54
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,719

Сообщение от evil0790
Ответ может быть "Y" или "N".
Ответ про фому, автор про ерему. Если ответ может быть N, и N у вас по умолчанию, вы как поймете что ответ вообще пришел? Ну, в рамках обращения по таймеру.
Ответить с цитированием
  #6 (permalink)  
Старый 07.02.2014, 18:33
Новичок на форуме
Отправить личное сообщение для evil0790 Посмотреть профиль Найти все сообщения от evil0790
 
Регистрация: 20.09.2010
Сообщений: 7

Сообщение от kostyanet Посмотреть сообщение
Ответ про фому, автор про ерему. Если ответ может быть N, и N у вас по умолчанию, вы как поймете что ответ вообще пришел? Ну, в рамках обращения по таймеру.
я переделал скрипт, сейчас использую обычную функцию, а не объект
Ответить с цитированием
  #7 (permalink)  
Старый 08.02.2014, 07:24
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,719

Как будто это имеет значение.

Я к тому что будучи немного знакомым с электронным приборостроением помню еще технологии опросов и прерываний. Когда в софтвере возникает задача следить за чем-то по тикам, никуда от хардверной технологии не деться. Потому что подводная лодка.
Ответить с цитированием
  #8 (permalink)  
Старый 08.02.2014, 10:17
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от kostyanet
Когда в софтвере возникает задача следить за чем-то по тикам
Не нужны тут никакие "тики". Браузер сам оповестит об окончании запроса и вызовет callback.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #9 (permalink)  
Старый 17.02.2014, 03:40
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,719

По условиям задачи нужны, что, конечно, для веб-приложений несуразно. Наверно автор не знал как обычно делается.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление страницы после получения ответа от сервера potrashitel AJAX и COMET 9 24.02.2015 09:04
Передача ссылки на объект при создании элемента Ваяс Элементы интерфейса 5 22.10.2013 00:00
передача функцией ответа ajax vladimircape AJAX и COMET 1 16.08.2012 11:02
Передача запроса на сервер. Что на н11м? 0931454574 AJAX и COMET 9 16.03.2011 18:23
правильная передача ссылки на объект в классе belbek Javascript под браузер 17 23.04.2009 22:29