не своевременное исполнение функции
Делаю первые шаги в написании userscript-ов. Столкнулся с проблемой когда результат выполнения функции появляется позже, чем исполняются следующие за ней операторы.(Конечно сужу по алертам, могу и ошибаться, тем более ошибка где-то ведь существует). Был бы рад помощи.
Вот фрагмент:
// вызов
var kk=0;
var kk=rez_snab (urlsnab);
alert(kk);
//.................................................
function rez_snab(url2) {
var k=0
$.get(url2, function(data) {
k=2;
alert(k);
});
alert(k);
return k;
}
По алертам получается: 0(kk), 2(k) , 2(k). Хотелось бы понять почему kk!=2. |
Andrey-Iz,
У Вас ассинхронный Аякс, поэтому обработку ставим в саllback Аякс функции (или вызывайте из саllback доп функцию обработки/отображения |
К своему стыду не понимаю вашего ответа. Может чуток по расширенней.
|
function(data) выполнится после того, как будет получен ответ от сервера.
Так как запрос асинхронный, то пока нет ответа будет выполняться весь остальной код. Но у вас получается так, если я не ошибаюсь. 0(k) -> приходит ответ, k=2 -> 2(k) -> 2(kk) |
skfyann, если я правильно понял, то как сделать чтобы основная функция "ждала" function(data) ?
|
Цитата:
|
skfyann, и по алертам именно так :0(kk), 2(k) , 2(k)
Т.е. var kk=rez_snab (urlsnab) как-бы игнорируется. |
// вызов
var kk=0;
var kk=rez_snab (urlsnab);
//Обработка
function MyFunc(k,gata) {
alert(k);
}
//.................................................
function rez_snab(url2) {
var k=0
$.get(url2, function(data) {
k=2; MyFunc(k,gata) ;
});
}
|
Deff, прошу прощения что не сразу отвечаю.(дела)
Спасибо. Скопировал ваш вариант. Вашу мысль вроде понял, но вот скрипт нет. Цитата:
$.get(url2, function(data) {
k=2; MyFunc(k,data) ;
});
Исправил в вызове gata на data. Понимаю что так должно быть. |
Т.е последовательность такова:
к=0 $... - пропускается кк = к //т.е.=0 $... - cрабатывает к=2 Но уже поздно. кк получено и =0 :( |
| Часовой пояс GMT +3, время: 21:54. |