25.08.2014, 22:23
|
Новичок на форуме
|
|
Регистрация: 25.08.2014
Сообщений: 7
|
|
Имеет ли значение асинхронность для возврата значения, если да - то как решить вопрос
Новичок, столкнулся с проблемой, не получается поместить результат выполнения функции в переменную. Не могу понять - это проблема моего синтаксиса (но ошибок не выдает) или какие-то заморочки конкретно языка. Код следующий
function createInstance()
{
var req = null;
if(window.XMLHttpRequest) {
req = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
alert("XHR not created");
}
}
}
return req;
}
function submitForm()
{
var req = createInstance();
req.onreadystatechange = function()
{
if(req.readyState == 4)
{
if(req.status == 200)
{
var but = req.responseText;
// console.log(but);
return but;
}
else
{
alert("Error: returned status code " + req.status + " " + req.statusText);
}
}
};
req.open("GET", "op21.php", true);
req.send(null);
}
var myVar= submitForm();
console.log(myVar);
в результате - undefined
|
|
25.08.2014, 23:15
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,227
|
|
Сообщение от antananarivu
|
в результате - undefined
|
Ответ еще не пришел...
|
|
25.08.2014, 23:45
|
Новичок на форуме
|
|
Регистрация: 25.08.2014
Сообщений: 7
|
|
подскажите, пожалуйста, каким образом решить проблему, если выполнять функцию отдельно без помещения ее результата в новую переменную - все выполняется.
|
|
25.08.2014, 23:56
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,589
|
|
Сообщение от antananarivu
|
выполнять функцию отдельно без помещения ее результата в новую переменную - все выполняется.
|
вот и ответ.
Работа с асинхроннотью основана на колбэках.
Выполнился асинхронный вызов - запустил колбэк функцию которой передал результат итд.
__________________
29375, 35
|
|
26.08.2014, 00:10
|
Новичок на форуме
|
|
Регистрация: 25.08.2014
Сообщений: 7
|
|
Сообщение от Aetae
|
вот и ответ.
Работа с асинхроннотью основана на колбэках.
Выполнился асинхронный вызов - запустил колбэк функцию которой передал результат итд.
|
Вы могли бы поправить мой код, так чтобы в var myVar поместился финальный результат выполнения функции submitForm();
А то я чисто теоретически понимаю что и как, а вот как получить результат "с асинхронностью" - не могу написать через код. Я написал, что новичок. В коде вместо op21.php можно подставить свой урл обработки асинхронного вызова - не суть важно.
|
|
26.08.2014, 00:12
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
повторенье - му
часто задаваемые вопросы кто-нибудь читает?
нет, потому что их много
Сообщение от antananarivu
|
Msxml2.XMLHTTP
|
кто-нибудь поддерживает ie<7?
Сообщение от antananarivu
|
каким образом решить проблему
|
польза в чём? в ответе
ответ приходит куда?
следовательно, где его нужно использовать?
а если он куда-то не приходит, нужно ли его там использовать? будет ли от него там польза?
|
|
26.08.2014, 00:45
|
Новичок на форуме
|
|
Регистрация: 25.08.2014
Сообщений: 7
|
|
Называется спросил на свою голову. Вместо того, чтобы элементарно объяснить в чем особенность асинхронного вызова и подсказать по коду как правильно оформить этот колбек, мне начинают рассказывать про то, что нужно чаво читать (который вместо классического вопрос - ответ является собой простыню чата) и задают типа наводящие вопросы совершенного мутного характера. Ребята, я перед тем как на форум придти гугл пошерстил, страницы посвященные аяксу прочитал. Я знаю как вернуть синхронный запрос, но в данном случае мне это не подходит. Я понимаю, что нужно вызвать обратную функцию в момент, когда в переменной появится ResponseText но я не понимаю как это оформить через код. Нужен пример. Вы тут на элементарные задачи отвечаете по пять вариантов четкого и простого кода, а тут на задачу, по которой особо и ответов не найти в гугле начинаете задавать какие-то мутные вопросы.
|
|
26.08.2014, 02:19
|
Профессор
|
|
Регистрация: 16.03.2010
Сообщений: 1,618
|
|
antananarivu, такую х**ню пишешь. Возвращайся к гуглению: поисковики пока на х** не шлют!
|
|
26.08.2014, 02:44
|
Новичок на форуме
|
|
Регистрация: 25.08.2014
Сообщений: 7
|
|
самое главное по сути ответил. Профессор, йопт, 1400 сообщений. мандаринки в магазине тоже, видимо, выбираешь по полчаса задавая наводящие глубокомысленные вопросы о методах их выращивания.
|
|
26.08.2014, 03:12
|
Новичок на форуме
|
|
Регистрация: 25.08.2014
Сообщений: 7
|
|
еще раз пишу - индивидуумы, у которых развился профессиональный кретинизм, проходите мимо. На любом форуме таких персонажей пруд пруди, не нравятся вопросы - не сидите на форумах, вас за язык никто не тянет и отвечать не заставляет. Нервируют нубские вопросы - выключите компьютер и подышите свежим воздухом, хотя бы раз в неделю и все пройдет.
|
|
|
|