2013-06-29 44 views
1

我有一小段代码,其中有一个switch case case语句的情况。如何在案件内请求中断时切换案例?

var id; 
switch(type){ 
    case 'type1': 
     //some code 
     break; 

    case 'type2': case 'type3': case 'type4': 
     //some code 
     ajax.get('url', 'JSON', 
      function(response) { 
      //callback for success 
       dosomething(response, id); 
      }, 
     function(response) { 
      //call back for failure 
       dosomethingelse(); 
     } 
     ); 
    break; 
} 

在2型3型TYPE4的情况下,请求被发送,但这种情况下,打破了之前的得到响应。并且由于变量“id”在每次交换呼叫时都在变化,所以当我得到响应时,我有不同的id值。

可以一些如何打破案件一我已收到回应?我试图将其放入内部,但这不起作用,它会引发一些错误。

回答

2

Ajax是异步的,这意味着它不会等待调用完成后才开始执行代码的其余部分。

包裹Ajax调用的匿名功能,因此您可以保护者值

var id; 


switch(type){ 
    case 'type1': 
    //some code 
    break; 

    case 'type2': case 'type3': case 'type4': 
    //some code 
    (function(id){ 
     ajax.get('url', 'JSON', 
      function(response) { 
      //callback for success 
      dosomething(response, id); 
      }, 
      function(response) { 
       //call back for failure 
       dosomethingelse(); 
      } 
     ); 
    })(id); 
    break; 
} 
+0

我调用函数DoSomething的()与Ajax调用的响应和一个变量,它改变了一切,开关被称为ID,所以当我得到响应时,变量具有不同的值。 – Shekhar

+0

据我了解,你应该附上只是ajax请求,而不是switch语句 –

+0

是的,我不认为我正在编辑,因为你做了评论:) –