자바스크립트에서 옵저버 패턴 질문있습니당.
로보코드 게임아시나요??
이것을 웹에서 즐길수있게 자바스크립트로 구현중입니다... (개인공부중이죠...)
------------------------------------
if(!enchant.Sprite.prototype.on || !enchant.Sprite.prototype.emit) {
enchant.Sprite.prototype.on = function(evtname, handler) {
if(this['_eventhandler_' + evtname]) {
this['_eventhandler_' + evtname].push( handler );
} else {
this['_eventhandler_' + evtname] = [handler];
}
}
enchant.Sprite.prototype.emit = function(evtname) {
if(this['_eventhandler_' + evtname]) {
var arr = this['_eventhandler_' + evtname];
for(var i in arr) {
arr[i].apply(this, Array.prototype.slice.call(arguments, 1));
}
}
}
}
player.emit("ahead", data)하여 강제발생시키면 player.on("ahead", function(){...})을 이용해 function을 수행하게됩니다..
function안에는 while문이 있으면 조건이 false가되면
문제는
emit하였을시 emit가 2개이상이되었을시(emit("ahead"), emit("turnRight"), ....등등) 동시에 실행이 된다는건데요.
저는 어떨때는 동시에 실행되다가도 어쩔때는
큐자료구조처럼 순차적으로 이용하고싶습니다..
제가 자바스크립트를 입문한지 약 1개월가량뿐이라 어딜디져봐도 잘모르겠습니다..
패턴이라는것도 잘몰라 겨우겨우 옵저버패턴이라는것을 배워 사용하게되었는데요.,..
방법에대한 힌트가 없을까요??
댓글 달기