비동기 js 인터페이스

1645 단어 js
	Function.prototype.bindAs = function(operator){
		var me = this;
		return function(){
			var args = [me].concat([].slice.call(arguments, 0));
			return operator.apply(null, args);
		};
	};

	var createFuse = function(){
		var queue, fn, infire;
		queue = [];
		fn = function(process){
			var args = [].slice.call(arguments, 1);
			if(infire)
				process.apply(null, args);
			else
				queue.push(function(){
					process.apply(null, args);
				});
		};
		fn.fire = function(){
			while(queue.length)
				queue.shift()();
			infire = true;
		};
		return fn;
	};

	//           ,     
	var swfReady = createFuse(); //        (         ,           )

	var store = {
		set: function(name, value){
			window.alert(["set", name, value]);
		}.bindAs(swfReady), //   set         

		get: function(name){
			// TODO:
		},

		remove: function(name){
			window.alert(["remove", name]);
		}.bindAs(swfReady) //   remove          
	};

	//              
	store.set("name", "dron");
	store.set("sex", "boy");
	store.remove("sex");
	store.set("age", 18);

	setTimeout(function(){ //       ,   flash     
		swfReady.fire(); //   flash             ,   ,         set,remove     (alert)
		store.set("sex", "girl"); //    ,             ,      ,      ,         
	}, 2000);

좋은 웹페이지 즐겨찾기