cierre dentro de un bucle for - devolución de llamada con variable de bucle como parámetro [duplicado]

Esta pregunta ya tiene una respuesta aquí:

JavaScript cierre dentro de bucles - ejemplo práctico simple 39 respuestas

Estoy usando jQuery "GET" en un bucle para obtener varios resultados del servidor. Quiero incluir el índice de bucle como un parámetro fijo para la devolución de llamada, pero no funciona.

(Seguí el consejo deEste artícul sobre cómo hacerlo.)

in embargo, el valor que obtengo en la devolución de llamada no es completamente lo que esperaba, en lugar de cada valor de índice de bucle, siempre es igual al valor de salida del índice.

es decir. el fragmento de código aquí imprime '16' para cada ejecución de la devolución de llamada. ¿Cómo consigo que imprima 1, 2, 3 ... (Me doy cuenta de que el orden puede ser diferente, está bien)

Además del código a continuación, he intentado varias formas de especificar la función de devolución de llamada, por ejemplo. @function(data, textStatus) { return test(data, textStatus, idx); }, 'text'); etc.

¿Cómo se supone que esto funcione

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'); 
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta