Javascript.RU

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

return в callback
Здравствуйте !
У меня extjs 3. В ext.onready делаю алерт:
alert (myfunc())

Получаю undefined. В ф-ции, которая в алерте, находится аякс запрос.
function myfunc(){
Ext.Ajax.request({
url: 'p.php', method: 'post',
callback: function(opts,suss,resp){
var c=1;
return c;
}
})
}

В пхп echo 1. Скажите, почему я получаю undefined ? Почему код в callback не работает, точнее не виден?
Ответить с цитированием
  #2 (permalink)  
Старый 05.08.2015, 14:09
Аватар для join
Профессор
Отправить личное сообщение для join Посмотреть профиль Найти все сообщения от join
 
Регистрация: 05.03.2012
Сообщений: 477

если нужно вывести var c:

https://jsfiddle.net/yp1bgz62/


ps: за пределами callback, переменную c не будет видно. Обычно так не делают. Хотя мож так нужно тебе.
Ответить с цитированием
  #3 (permalink)  
Старый 05.08.2015, 14:38
Интересующийся
Отправить личное сообщение для maksimka2112 Посмотреть профиль Найти все сообщения от maksimka2112
 
Регистрация: 07.08.2014
Сообщений: 25

Сообщение от join Посмотреть сообщение
ps: за пределами callback, переменную c не будет видно
И ничего нельзя поделать,чтобы её было видно? Чтобы её можно было получить с помощью фунции myFunc, то есть сделать var myvar=myFunc () и чтоб в myvar было значение из callback
Ответить с цитированием
  #4 (permalink)  
Старый 05.08.2015, 14:42
Аватар для join
Профессор
Отправить личное сообщение для join Посмотреть профиль Найти все сообщения от join
 
Регистрация: 05.03.2012
Сообщений: 477

вынеси var c; за пределы myFunc(). и убери var в самой функции, оставив c=1.
Ответить с цитированием
  #5 (permalink)  
Старый 05.08.2015, 14:53
Интересующийся
Отправить личное сообщение для maksimka2112 Посмотреть профиль Найти все сообщения от maksimka2112
 
Регистрация: 07.08.2014
Сообщений: 25

Сообщение от join Посмотреть сообщение
вынеси var c; за пределы myFunc(). и убери var в самой функции, оставив c=1.
Делал так,не помогает
Ответить с цитированием
  #6 (permalink)  
Старый 05.08.2015, 17:27
Аватар для join
Профессор
Отправить личное сообщение для join Посмотреть профиль Найти все сообщения от join
 
Регистрация: 05.03.2012
Сообщений: 477

может пивка для рывка?
Ответить с цитированием
  #7 (permalink)  
Старый 05.08.2015, 18:06
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Это же асинхронный вызов. То есть функция myFunc завершает выполнение ДО ТОГО как завершится функция callback. Поэтому myFunc не сможешь выдать с

кстати, у вас в функции myFunc нет даже return)))
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #8 (permalink)  
Старый 06.08.2015, 08:38
Интересующийся
Отправить личное сообщение для maksimka2112 Посмотреть профиль Найти все сообщения от maksimka2112
 
Регистрация: 07.08.2014
Сообщений: 25

Сообщение от khusamov Посмотреть сообщение
Это же асинхронный вызов. То есть функция myFunc завершает выполнение ДО ТОГО как завершится функция callback. Поэтому myFunc не сможешь выдать с

кстати, у вас в функции myFunc нет даже return)))
То,что ассинхронный я понял. Просто думал,что можно как-то изловчиться. В 4 эксте всё решается командой async: false, но у меня 3 экст...
return есть в callback, вы невнимательно смотрели. Но если его вывести за пределы callback, то будет возвращаться совершенно иная переменная. И даже определение её в качестве глобальной не поможет, функция,как вы и сказали,выполнится быстрее ответа с сервера. Видимо мою проблему не решить. Либо решить подключением jQuery или prototype.js
Ответить с цитированием
  #9 (permalink)  
Старый 06.08.2015, 12:59
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Цитата:
return есть в callback,
А я не про callback
В функции myFunc нет return, а вы делаете alert (myfunc()), значит что-то ждете из myFunc, у которой нет return))))
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #10 (permalink)  
Старый 06.08.2015, 13:06
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Цитата:
Просто думал,что можно как-то изловчиться. В 4 эксте всё решается командой async: false,
Забавно звучит "изловчиться" в отношении асинхронных вызовов.

Вот что я скажу, опцию async: false нельзя использовать. Надо программировать так, чтобы все вызовы были только асинхронные.

Опция async: false это на крайний случай или для построения времянки. Нечто аналогичное как goto команда, которой тоже пользоваться нельзя))))

Цитата:
Видимо мою проблему не решить.
К сожалению вы не описали саму проблему. Не ясно что вы там решаете. Если то, что написали в первом посте, то решение привели во втором посте. То есть человек вам сразу вывел значение переменной С. Но вам же другое нужно, а что именно - вы не пишите.

Вам чем не понравилось решение из второго поста?

Вот, привожу его повторно:

function myfunc(){
    Ext.Ajax.request({
        url: '/', 
        method: 'post',
        callback: function(opts, suss, resp){
            var c = 1;
            return alert(c);
        }
    })
}
myfunc();


В общем распишите подробнее, тогда есть шанс вам помочь.
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов функции Hol1killer Prototype & script.aculo.us 11 05.12.2016 01:37
jQuery научите пользоваться. Станислав89 Общие вопросы Javascript 10 19.12.2013 23:01
Работа с textarea Rompo Events/DOM/Window 14 16.12.2013 17:41
Помогите разобраться ŞΘLƉiΞR Общие вопросы Javascript 2 28.08.2012 11:57
регулярки: замена ссылки на ютуб Hekumok Общие вопросы Javascript 105 01.08.2012 10:48