Jquery ajax 参数回调和变量作用域

Jquery ajax parametric callback and variable scope

我在 javascript 变量范围方面不是很专业,并且遇到了一个问题。

如果我有 ajax 调用然后调用我的回调的函数

function doAjaxFunc(param, callback) 
{
  $.ajax({
    type: 'GET',
    url: '/some/url/'+param,
    success: function(data){        
        callback(data);
    },
    dataType:'json'
  });
}

function someCallback1(ajaxResp){
   // DO someting 1
}

function someCallback2(ajaxResp){
   // DO someting 2
}

// exec
doAjaxFunc(1, someCallback1);
doAjaxFunc(2, someCallback2);

由于 ajax 是异步的,服务器处理 param=1 情况的时间可能比 param=2 长,someCallback1 和 someCallback2 可能不会处理它们的响应。我的意思是回调参数值会以某种方式混合?

如果可能的话在回答中给出一些详细的解释

I mean callback argument value will be somehow mixed?

没有。回调将在原始 AJAX success 处理程序的范围内以完全独立的调用方式调用。任何一个请求的数据都不会交叉污染。

此外,顺便说一句,您可以更改此设置:

success: function(data){        
    callback(data);
},

仅此而已:

success: callback,

查看此示例,希望对理解 JavaScript

中的范围有所帮助

var isFirstCall=false;
function doAjax(param)
{
  if(!isFirstCall)
  {
    //for example after do ajax
    var millisecondsToWait = 1000;
    setTimeout(function() {
    console.log(param);  
    }, millisecondsToWait);
  }
  isFirstCall=true;
  console.log(param);  
}

doAjax('first call');
doAjax('second call');