Показать сообщение отдельно
  #1 (permalink)  
Старый 27.03.2014, 19:16
Аватар для Hapson
Кандидат Javascript-наук
Отправить личное сообщение для Hapson Посмотреть профиль Найти все сообщения от Hapson
 
Регистрация: 23.07.2013
Сообщений: 122

Deferred - что внутри него?
Искал долго (может не там искал...), но так и не удалось найти чистый исходный код Deferred. Смотрел в jquery - ниче не понял. На основе прочитанного вот набросал:
function Deferred(){
	var self = this;
	var doneList = [];
	var failList = [];
	var condition = 0;
	
	function add(func, list){
		list.push(func);
		switch(condition){
			case -1:
				run(failList);
				break;
			case 1:
				run(doneList);
		}
	}
	
	function run(list){
		while(list.length > 0){
			list.shift()();
		}
	}
	
	this.done = function(f){
		add(f, doneList);
		return this;
	};
	
	this.fail = function(f){
		add(f, failList);
		return this;
	};
	
	this.resolve = function(){
		condition = 1;
		run(doneList);
		return this;
	};
	
	this.reject = function(){
		condition = -1;
		run(failList);
		return this;
	};
	
	this.state = function(){
		return condition;
	};
	
	/*** TMP ***/
	
	this.getDone = function(){
		return doneList;
	};
}


Примерно оно?
Ответить с цитированием