Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Цепочка функций, последовательное выполнение (chaining) 
:(
    Опции темы
ksnk
Дата 30.1.2008, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Sardar, имеется ввиду, что в цепочке могут присутствовать функции, которые не заканчиваются фактом своего вызова. К примеру, выставляющие мрачный таймаут и чекающие какое-нибудь странное состояние. Про такие функции только она сама может сказать, когда-же она пожелает закончится ;-) Пример - получение Ajax'ом странички. Я сейчас активно думаю над  возможностью писать 
chain(get_ajax,'mypage.php?action=hello')
.chain(pace_into_div,[null,null,'div_id']) // null - placeholder для RequestText, RequestError

Моя схема позволяет вызываемой функции самой определить время своего завершения и вызвать следующий элемент в цепочке... А Ваша? smile

Добавлено через 9 минут и 1 секунду
Цитата(Dr.Zlo @  30.1.2008,  14:58 Найти цитируемый пост)
Кстати, ещё одна интересная тема для размышлений- можно ли chain замкнуть на саму себя, чтоб все операции выполнялись в цикле заданное количество раз, либо бесконечно, пока мы насильно не остановим chain?

Хм... вставлять в chain операторы ветвления по условию, циклы и свитчи... + парраллельное исполнение анимаци... smile Соблазнительно, но пока думаю, что это ненужный геморой...
В принципе, можно как-то обойтись и существующей схемой. Достаточно иметь указатель на головной chain в исполняемой процедуре. Сама процедура уже может навставлять в массив всего чего пожелает... Надо только разумно ограничить ее желания ;-)
В принципе, указатель на головной chain можно получить, вызвав arguments.calee.next с каким- нибудь характерным параметром... В общем - нужно подумать...

Это сообщение отредактировал(а) ksnk - 30.1.2008, 19:27


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Dr.Zlo
Дата 30.1.2008, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 12.11.2007

Репутация: 1
Всего: 2



Кстати, вот примитивная реализация цикличности. Тупо и забавно smile

Код

$(document).ready(function(){
    loop_chain();
})

function loop_chain(){
  var obj =$('#animate_div');
  var speed = 500;
  Chain(animate, [obj, speed]).chain(animate2, [obj, speed]).chain(loop_chain).run();
}


function animate(obj, speed){
    $(obj).animate({'width': '1000', 'height': '1000'}, speed, 'linear', function(){
        if (animate.next) animate.next();
    })
}

function animate2(obj, speed){
    $(obj).animate({'width': '100', 'height': '100'}, speed, 'linear', function(){
        if (animate2.next) animate2.next();
    })
}


Добавлено через 3 минуты и 45 секунд
Кстати, 
Цитата

Согласен... Зато твой - определение "нечетности", а не "четности" ;-)

не забываем, что в массивах чётные элементы имеют нечётные индексы ;-)
PM MAIL   Вверх
ksnk
Дата 9.2.2008, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



В функции обнаружился баг. Связан он с хранением "цепочки" в самой функции анимации. Если используется анимирование сразу в несколько потоков, цепочки загадочным образом путаются с труднопредсказуемым результатом... Было принято решение откатится до фиксированного формата функций анимации. Правда здравый смысл все-таки немного победил, теперь они получают 3 параметра, 2 из которых - нормальные параметры, а 3-й callback функция для вызова. Во вложении сам chain и примерчик его использования.

Это сообщение отредактировал(а) ksnk - 9.2.2008, 16:28

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  chain.zip 2,84 Kb


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0461 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.