Цепочка вызовов с таймаутом.
Господа, можно ли сделать вот такую красивость:
formObj.config(par).show(); Эта штука настраивает форму и показывает её на страничке. Хитрость в том, что при "настройке" (config()) объект формы (formObj) лезет на сервер и заполняет эту самую форму. Так вот, надо "проявлять" форму только после того, как форма будет заполнена (т.е. не сразу). Я попытался сделать вот так (не получилось):
form.config(id).show();
form = {
config: function(par){
//тут форма заполняеться (с привлечением AJAX)
setTimeout('return this', 2000); //сейчас это "задержка", но можно сделать и callback от AJAX
}
show: function(){...} //проявляет форму
...
}
Как делаються подобные вещи "по-человечески", если делаються, конечно? |
Сделать, конечно, можно (есть ли смысл заморачиваться - вопрос отдельный). Например, можно складывать вызовы в стек и звать "по готовности":
<div id="toLog"></div>
<script type="text/javascript">
var Constructor = function(){
var stack = [];
this.add = function(str){
stack.push(str);
if(stack.length === 1){
document.getElementById('toLog').innerHTML += stack[0];
setTimeout(function(){
stack.shift();
if(stack.length === 0) return;
document.getElementById('toLog').innerHTML += stack[0];
setTimeout(arguments.callee, 500);
}, 500);
};
return this;
};
};
var inst = new Constructor();
inst.add('Tra').add(' - la').add(' - la!!!');
</script>
|
Наворотил; хотя и не блеск, но работает:
form.config(id).show();
form = {
editId: null,
config: function(id){
this.editId = id;
return this;
},
//фиктивный метод, он выставлен наружу
//на самом деле форма "проявляеться" методом "showInner"
show: function(){
this.fill(this.editId, this.showInner);
},
fill: function(id, fn){
//тут АЯКС и всё такое
fn(); //вызываеться внутри колбека из АЯКСА
},
showInner: function(){...}
}
|
@Sweet: спасибо огромное, не знал я такого способа!
у-у-у, хитрое решение... |
Цитата:
|
Цитата:
Что знает о разметке сервер? Что вы хотели вообще сказать вашей фразой я не понял - очень сложно. |
я хотел сказать, что не надо отправлять html в ajax-запросы, что надо делать "по-человечески"
|
Цитата:
А, кажется я понял: "form" это не имя формы из DOM, это я так (неудачно?) назвал JS-объект (он просто отражает саму форму со странички). |
просто если ты подробнее расскажешь, чего ты пытаешься добиться, можно попытаться найти решение получше ;)
|
У меня была конкретная задача - сделать заполнение формы на сайте. Т.е. я жму кнопочку, на сервер лезет запрос, возвращает данные, которые подставляються в HTML-форму и у же только потом эта форма появляеться на страничке (заполненная как надо).
Но спрашивал я не про это, мне хотелось знать, более абстрактно, как делаються "цепочки вызовов" с "отсрочкой" - вот об этом я и спросил. |
| Часовой пояс GMT +3, время: 11:23. |