我有一小段代码,其中有一个请求在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值。
如果我收到回复,我可以打破一些情况吗?我尝试将其放入内部,但这不起作用,它会引发一些错误。
答案 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;
}