2013-06-29 47 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

是的,我不認爲我正在編輯,因爲你做了評論:) –