연속적으로 동일한 ajax를 동일한 조건으로 호출시
선행호출된 callback이 제대로 return function이호출 되기전에 
다시 호출되면 선행호출된 callback 함수의 리턴값은 직전호출의 결과값이 나오는 경우가 자주있다.

첫번째 콜
null -> error
1

두번째 콜
1 -> 잘못된 경우
2

혹은
2 -> 정상인 경우
2

            onChange : function(event)
            {
                var me = this;
                
                switch (event.target.id)
                {
                    case "rdoTwType" :
                    case "rdoTwCmps" :
                        // 신규작성시 모듈변경시 선택한 옵션 초기화
                        if (me.formula("enabledRdoTwType"))
                        {
                            //me.set("twh.tw_cmps_cd", "10"); // 제품구성
                            me.set("twh.tw_dvlp_cd", null); // 개발유형
                            me.set("twh.tw_usg_cd", null);  // 제품용도
                            me.set("twh.tw_vlum_cd", null); // 용량
                        }
                        me.onPageSelect();
                        break;
                    
                    case "rdoTwDvlp" :
                    case "rdoTwUsg" :
                    case "rdoTwVlum" :
                        if (UT.isNotEmpty(me.currentModule) && UT.isFunction(me.currentModule.resetData))
                        {
                            me.currentModule.resetData();
                        }

                        me.domHost.applyFormula("enabledBtnRcly");    // 분리배출 버튼제어
                        break;
                }
            },
            
            onPageSelect : function()
            {
                var me = this;
                var _moduleID = "";

                // 단품인경우
                if (me.twh.tw_cmps_cd == "10")
                {
                    switch (me.twh.tw_type_cd)
                    {
                        case "10" :
                            _moduleID = "twType10";
                            break;
                            
                        case "20" :
                            _moduleID = "twType20";
                            break;
                            
                        case "30" :
                            _moduleID = "twType30";
                            break;
                            
                        case "40" :
                            _moduleID = "twType40";
                            break;
                    }
                }
                else
                {
                    _moduleID = "dummyModule";
                }

                me.$.pagesTW.selectItem(me.$[_moduleID], function(module)
                {
                    me.currentModule = module;
                    
                    if (UT.isNotEmpty(module) && UT.isFunction(module.load))
                    {
                        // 품목분류, 제품구성값의 동시 셋팅시 이중호출 방지
                        if (!UT.nvl(me.subModuelCalled, false))
                        {
                            me.subModuelCalled = true;
                            module.load(UT.copy(me.twh));

                            // 선행호출이 완료될때까지 Delay (1초사이 동시호출방지) 
                            setTimeout(function()
                            {
                                me.subModuelCalled = false;
                            }, 1000);
                        }
                    }
                });
            },