07.02.2014, 11:50
|
Новичок на форуме
|
|
Регистрация: 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);
})
|
|
07.02.2014, 12:33
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Сообщение от evil0790
|
Проблема в том, что не могу обратиться к ответу запроса из функции в setinterval
|
А если ответа еще нет, то как ты его получишь? Запрос может затянуться, скажем, на несколько секунд (проблемы с сетью например).
Используй setTimeout вместо setInterval, дожидайся ответа, а там уже действуй как знаешь.
__________________
В личку только с интересными предложениями
|
|
07.02.2014, 13:21
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Сообщение от evil0790
|
Проблема в том, что не могу обратиться к ответу запроса из функции в setinterval, код ниже:
|
Можете. Вместо бинарной юзайте тернарную логику. status = null; Ответ сервера может изменить значение на N или Y. Именно по отличию от null скрипт "понимает" что ответ пришел и принимает то или иное решение. Пока null - выходит на следующий тик и ждет, и ждет, и ждет... дождались, выполнили поручение, status=null и по кругу.
|
|
07.02.2014, 19:14
|
Новичок на форуме
|
|
Регистрация: 20.09.2010
Сообщений: 7
|
|
Спасибо за наводку с таймаутом, действительно, погорячился я с интервалом, реализовал просто вызовом самой функции из себя с таймаутом в зависимости от ответа.
|
|
07.02.2014, 19:54
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Сообщение от evil0790
|
Ответ может быть "Y" или "N".
|
Ответ про фому, автор про ерему. Если ответ может быть N, и N у вас по умолчанию, вы как поймете что ответ вообще пришел? Ну, в рамках обращения по таймеру.
|
|
07.02.2014, 20:33
|
Новичок на форуме
|
|
Регистрация: 20.09.2010
Сообщений: 7
|
|
Сообщение от kostyanet
|
Ответ про фому, автор про ерему. Если ответ может быть N, и N у вас по умолчанию, вы как поймете что ответ вообще пришел? Ну, в рамках обращения по таймеру.
|
я переделал скрипт, сейчас использую обычную функцию, а не объект
|
|
08.02.2014, 09:24
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Как будто это имеет значение.
Я к тому что будучи немного знакомым с электронным приборостроением помню еще технологии опросов и прерываний. Когда в софтвере возникает задача следить за чем-то по тикам, никуда от хардверной технологии не деться. Потому что подводная лодка.
|
|
08.02.2014, 12:17
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Сообщение от kostyanet
|
Когда в софтвере возникает задача следить за чем-то по тикам
|
Не нужны тут никакие "тики". Браузер сам оповестит об окончании запроса и вызовет callback.
__________________
В личку только с интересными предложениями
|
|
17.02.2014, 05:40
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
По условиям задачи нужны, что, конечно, для веб-приложений несуразно. Наверно автор не знал как обычно делается.
|
|
|
|