我使用变量来限制用户的查询操作,就像操作系统的关键区域一样。
//call 'fun' only if it is free(at the end of fun ,it will do isQuery=true)
var getInfo= function(param,callback){
if(!isQuery){
isQuery = true;
fun(param,callback);
}
}
但是当两个查询请求同时发生时,param
出错了,就像收到的B param
,而B没有成功召唤!我认为这是一个多线程问题,
当A被授权(isQuery == false
)称为“有趣”时,就在句子“fun(param,callback)
”即将执行之前,B调用了getInfo
,并传递了新的{{ 1}}和param
到callback
,但是现在,getInfo
,B未经授权,然后isQuery == true
使用B的参数执行fun getInfo
,所以它出错了,我是对的?
答案 0 :(得分:0)
示例中的代码不足以解决问题,问题可能与Ext JS无关。请提供完整的源代码。
你在这里可能是一个常见的Javascript错误,带有双重输入功能,内部函数就像这样
function broken(url, x) {
var params = { something : x }
function post() {
$("#elem).get(url, params);
}
post();
}
broken()只保留一个params状态并将其委托给闭包。因为您输入了两次函数,当仍然使用初始参数状态时,将覆盖第一个参数状态。
要解决此问题,只需按原样传递函数参数,不要在可能双重输入的函数中创建var locals。