1

我有一小段代码,其中在 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 值会有所不同。

我可以如何破解我收到回复的案例吗?我试着把它放进去,但这不起作用,它会引发一些错误。

4

1 回答 1

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;
}
于 2013-06-29T08:34:36.853 回答