这个问题已经在这里有一个答案:
- JavaScript的闭包内环路-简单实用的例子 43个回答
我使用jQuery“GET”在循环中从服务器获取几个结果。 我想包括循环指数作为固定参数回调,但它不工作。
(我也跟着的意见这篇文章对如何做到这一点。)
然而,我在回调中获得的价值完全不是我所期待的 - 而不是每个循环索引值,它总是等于指数的退出值。
即。 这里的代码片段打印出“16”回调的每一次执行。 我如何得到它打印1,2,3 ...(我知道的顺序可能会有所不同,这很好)
除了下面的代码,我试过几种方式来指定回调函数,例如。 function(data, textStatus) { return test(data, textStatus, idx); }, 'text');
等等
这是如何工作的?
function test(data, textStatus, siteNo)
{
console.log("siteNo=" + siteNo);
}
function loadConfigLists()
{
var siteReport;
// retrieve site configuration
jQuery.get("svGetSiteConfig.php", function(data, textStatus)
{
// retrieve port configuration for all sites
for (var idx=1; idx<=15; idx++)
{
var probeIP = siteConfigArray[idx].siteIP;
if (probeIP != "" && probeIP != null)
jQuery.get("svGetPortInfo.php?svSiteIpAddr=" + probeIP+"&s="+idx,
function(data, textStatus) { test(data, textStatus, idx); }, 'text');
else // IP value is blank
siteConfigArray[idx].portManifest = null;
}
}
}, 'text');
}