jQuery迭代$.get()是否安全?

jQuery迭代$.get()是否安全?,jquery,thread-safety,Jquery,Thread Safety,我在绑定下拉列表时遇到问题。我认为问题在于我的$.get()中的回调。在循环中执行get是否不安全?例如 //on document ready var stateOneOrTwo = "stateOne"; for(var i = 0; i < 2; i++){ if(i === 1) stateOneOrTwo = "stateTwo"; $.get(url,{},function(data) { var dropdown = stateOneOrT

我在绑定下拉列表时遇到问题。我认为问题在于我的
$.get()
中的回调。在循环中执行get是否不安全?例如

//on document ready
var stateOneOrTwo = "stateOne";
for(var i = 0; i < 2; i++){
   if(i === 1)
       stateOneOrTwo = "stateTwo";

   $.get(url,{},function(data) {
    var dropdown = stateOneOrTwo;
    $(dropdown).append(/*options*/);
   , 'json')};
}
//已准备好文档
var stateOneOrTwo=“stateOne”;
对于(变量i=0;i<2;i++){
如果(i==1)
stateOneOrTwo=“stateTwo”;
$.get(url,{},函数(数据){
var下拉列表=状态1或状态2;
$(下拉)。追加(/*选项*/);
,'json')};
}


这似乎是不安全的。我把枯燥的原则扔出窗外。当我复制粘贴代码并仅仅更改涉及的变量名时,我没有任何问题。我将把这个问题留待具体答案。

我完全不确定
$是否会失败。如果你在完成之前调用一个新的,那么get
会失败,但是,一个更安全(正确)的方法是使用递归函数确保在发送下一个请求之前完成请求。

问题是,在XHR返回之前,您正在更改stateOneOrTwo,因此两个回调都将以
stateOneOrTwo
等于
stateTwo
的状态运行。如果您只需要调用get两次,那么实际上不需要循环

$.get(url,{},function(data) {
    var dropdown = "stateOne";
    $(dropdown).append(/*options*/);
}, 'json');

$.get(url,{},function(data) {
    var dropdown = "stateTwo";
    $(dropdown).append(/*options*/);
}, 'json');

这不是同样的问题吗?如果两个get请求都有
stateone或两个
更改,为什么
i
会保持不变?是的,我在提交后意识到了这一点。这就是我最终要做的。正如Rikudo指出的,可能有更好的方法来处理我正在做的事情。但是,就目前而言,这是可行的。+1谢谢,我不熟悉递归函数。当我完成基本布局时,我将不得不作为重构来研究这个问题。不过,我更愿意创建并行的速度请求。