не своевременное исполнение функции
Делаю первые шаги в написании 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, время: 06:35. |