Цепочка вызовов с таймаутом.
Господа, можно ли сделать вот такую красивость:
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:53. |