Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ExtJS,它是线程安全的吗?_Javascript_Multithreading_Extjs_Thread Safety - Fatal编程技术网

Javascript ExtJS,它是线程安全的吗?

Javascript ExtJS,它是线程安全的吗?,javascript,multithreading,extjs,thread-safety,Javascript,Multithreading,Extjs,Thread Safety,我使用一个变量来限制用户的查询操作,就像操作系统的关键区域一样 //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出错,就像

我使用一个变量来限制用户的查询操作,就像操作系统的关键区域一样

//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的A收到了
param
,而B没有成功调用fun!我认为这是一个多线程问题

当A被授权(
isQuery==false
)调用“fun”时,就在“
fun(param,callback)
”语句即将执行之前,B调用了
getInfo
,并将新的
param
callback
传递给
getInfo
,但现在,
isQuery==true
,B未被授权,然后用B的参数执行fun
(param,callback)
,所以它出错了,对吗

请原谅我糟糕的英语


ps2:非常感谢,但我仍然不确定,也许这不是一个多线程问题,但这是怎么发生的?只有一个“getInfo”实例,所以它总是保留最新的参数吗?

示例中的代码不足以解决问题,而且问题可能与Ext JS无关。请提供完整的源代码

这里可能有一个常见的Javascript错误,即双输入函数的内部函数如下

    function broken(url, x) {

        var params = { something : x }

        function post() {
            $("#elem).get(url, params);
        }   

        post();

    }
breaked()只在其内部保留一个参数状态,并将其委托给闭包。因为您输入函数两次,当初始参数状态仍在使用时,第一个参数状态将被覆盖


要解决这个问题,只需按原样向前传递函数参数,请不要在可能重复输入的函数中创建var局部变量。

JS在所有浏览器中都在一个线程中运行,但chrome我想这更多的是关于“请求安全”,而不是线程安全,我相信这是您问题的答案。