Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 31.10.2011, 10:28
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

x-yuri, ты приводишь пример для цепочек (как я понял), а как по твоему записывать отслеживание окончания двух и более действий? Т. е. как бы ты записывал вот это:

var dfr1 = new Deferred(function() { console.log('dfr 1'); });
var dfr2 = new Deferred(function() { console.log('dfr 2'); });
 
Deferred.when(dfr1, dfr2).then(function() { console.log('dfr all'); });
 
setTimeout(function() { dfr1.resolve(); }, 2000);
setTimeout(function() { dfr2.resolve(); }, 5000);
Ответить с цитированием
  #22 (permalink)  
Старый 31.10.2011, 11:21
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от Riim
а как по твоему записывать отслеживание окончания двух и более действий?
с помощью Deferred, просто передо мной никогда не стояли такие задачи, поэтому и интересуют конкретные варианты применения (может в nodejs...)
Ответить с цитированием
  #23 (permalink)  
Старый 31.10.2011, 12:46
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от x-yuri
поэтому и интересуют конкретные варианты применения
мне понадобилось для отслеживания окончания нескольких анимаций.
Ответить с цитированием
  #24 (permalink)  
Старый 31.10.2011, 14:43
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от Riim
мне понадобилось для отслеживания окончания нескольких анимаций.
это не конкретный пример, или другими словами, мне непонятно, что это за анимации, для меня он не конкретный
Ответить с цитированием
  #25 (permalink)  
Старый 31.10.2011, 17:03
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от x-yuri
это не конкретный пример, или другими словами, мне непонятно, что это за анимации, для меня он не конкретный
в моей библиотеке animate может принимать колбэк oncomplete, который срабатывает после завершения анимации всех свойств (при абсолютной скорости они в разное время могут завершаться). Мне не очень нравится, как у меня это там записано, и я не вижу, как это можно записать заметно лучше. Вот и начал в этой теме разбираться, правда пока мне совсем не нравится то, что выходит.

Вот кусок, который меня беспокоит:
// если есть общий oncomplete
if (options && options.oncomplete) {
	// запоминаем его на массиве в котором лежат потоки анимации
	anim.oncomplete = options.oncomplete;
	// options потом попадет в new Animation, записываем в него обработчик, который при каждом вызове пробегает по всем потокам и, если все завершены, вызывает общий обработчик.
	options.oncomplete = function() {
		if (anim.every(function(subanim) { return subanim._progress == 1; })) {
			anim.oncomplete();
		}
	};
}
Ответить с цитированием
  #26 (permalink)  
Старый 31.10.2011, 17:31
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от Riim
Мне не очень нравится, как у меня это там записано
а мне нравится а почему не нравится?
Ответить с цитированием
  #27 (permalink)  
Старый 31.10.2011, 18:16
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от x-yuri
а почему не нравится?
а хрен его знает, с комментариями вроде читабельно смотрится.
Ответить с цитированием
  #28 (permalink)  
Старый 11.11.2011, 07:01
Аватар для float
Профессор
Отправить личное сообщение для float Посмотреть профиль Найти все сообщения от float
 
Регистрация: 01.07.2010
Сообщений: 387

всётаки решил отказаться от диферд листа.
цацка красивая. но чёт я подумал ещё раз - на основной инструмент не катит.
заюзал более простую концепцию:
сделал _.funcList();
и простейший диферд на основе его.
получается диферд это объект с 2-мя списками функций, который может выполнить только 1-н, 1-н раз.
получается то, что нужно в основном для ajax-а.(в фреймворке по крайней мере)

а на основе фанклиста можно делать другие объекты сколь угодной сложности.
у фанклиста стоит счётчик выполнений, и нет ограничения на число вызовов. это устраняет самую большую проблему прошлой реализации: необходимость заново инициировать объект если что. это не то чтобы недостаток. просто скорее диферд лист - более узкий случай. включать ли его в фреймворк ещё подумаю...
Ответить с цитированием
  #29 (permalink)  
Старый 11.11.2011, 15:26
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от float
сделал _.funcList();
закеж)
Ответить с цитированием
  #30 (permalink)  
Старый 11.11.2011, 16:20
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от float
сделал _.funcList();
и простейший диферд на основе его.
насколько я понял это не deferred получается. Основное отличие deferred - возможность отследить завершение нескольких паралелльных процессов.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск