callback или delegate: техника разработки 
		
		
		
		Всем привет! 
	В основном разрабатывал на монстрах вида Ext.js ембер, backbone..., и cейчас активно разрабатываю на чистом js. Возник вопрос в реализации одного и того же кода. 
function handler(value) {
    return value * 1000;
}
function a(value, handler) {
   handler(value);
}
$.bind('running', function (value) {
    return value * 1000;
});
......
function a(value) {
   Bind.trigger('running', value);
}
разница - в одного передётся калбек функция, а во втором случае просто подписка. Я не могу прочуять "соль"! Как лучше что и где применять? Спасибо.  | 
	
		
 второй вариант лучше как-то так: 
	
var eventRunning= new EventRouter
......
eventRunner.listen( function( value ){
    return value * 1000
} )
......
function a( value ){
   eventRunning( value )
}
но события имеет смысл применять лишь когда обработчиков может быть произвольное число(0, 1, много) и результат их отработки нам не особо важен. а даже если какой-нибудь из них упадёт с исключением - это его личные трудности и нас они не касаются. коллбэки дают более простую логику работы, так что где не требуются события лучше применять их  | 
	
		
 Не понял вопроса, ты не понимаешь где нужно юзать систему событий а где юзать калбаки? и противопоставляешь их? 
	п.с. не понял, при чем тут "делегирование"  | 
	
		
 tenshi, да думаю это единственное различие. 
	Я не писал делегирование, я написал delegate по аналогии метода jQuey .delegate() Дополнение 1) Да, я не понимаю где их юзать и противопоставляю их, так как они выполняют одинаковую функцию (это на мой взгляд) 2) Я не вижу приимущества в архитектурном плане какой вариант предпочительней.  | 
	
		
 Цитата: 
	
  | 
	
		
 jQuery.delegate() !!!!!!!!!!!! 
	офф топ! на вопрос не получил ответа...  | 
	
		
 Да я не первый день на js программирую. 
	Я знаю что такое калбеки и тд. Я привёл вопрос в первом сообщении, можете ещё раз посмотреть. Отличие в 1) после отработки вызовет просто функцию калбек! 2) он вызавет замыкание по имени, никаких калбеков вообще нет (тоесть нет никаких упоминаний), и вот если есть подписи на этот именованое событие уже срабатывают тригеры (туева куча каллбеков хоть вызывается) вопрос опять (снова), с какой точки зрения правильнее разрабатывать приложения на js? Или ещё такой: когда использовать то, а когда то? (примерный ответ дал tenshi) П.С. Без готового фреймворка, так как там всё становится понятнее  | 
	
		
 Tenshi, 
	Только сейчас разглядел, то что ты предложил, никак "не лучше, чем 2", это ближе к калбекам, потому что при $.bind() могут быть вызовы вообще из разных контекстов, а тут eventRunning долже быть в замыкании. Пример: система авторизации, и модуль пользователя  | 
	
		
 Цитата: 
	
 Цитата: 
	
 ну, давайте подумаем, чем отличается функция обратного вызова от системы событий. чем ? да ничем - второе является расширением функциональности первого. в обсерверах (подписчик) есть имена событий, в коллбеках - нет. больше различий не вижу.  | 
	
		
 Цитата: 
	
 Пример: 
MySuperApplication.AuthorizationSystem.eventUserLogged.listen( function( user ){
    if( prompt( 'Добрый день, не хотите ли отведать этих мягких французских булак, да выпить йаду?' ) )
        document.location= '/my/cookies/'
})
 | 
	
		
 эх.. а я только собрался изучать node.js 
	 | 
	
		
 там разве файберы не довели ещё до ума? 
	 | 
	
		
  | 
| Часовой пояс GMT +3, время: 13:33. |