在内部请求完成时如何打破Switch案例?

时间:2013-06-29 08:32:23

标签: jquery switch-statement break

我有一小段代码,其中有一个请求在switch 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;
}

在type2 type3 type4的情况下,正在发送请求,但该情况在获得响应之前中断。并且因为变量“id”在每次切换调用时都在变化,所以当我得到响应时,我有不同的id值。

如果我收到回复,我可以打破一些情况吗?我尝试将其放入内部,但这不起作用,它会引发一些错误。

1 个答案:

答案 0 :(得分:2)

Ajax是异步的,这意味着它不会等待完成调用以开始通过其余的代码。

将ajax调用包装在anon函数中,以便保存id值

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;
}