Impostazione di un arrays di callback e tentativo di utilizzare l'indice di matrix come valore nel callback

Quando imposta un arrays di callback in questo modo otterò 20 nella window di dialogo per tutte le chiamate. Vorrei invece get l'indice nell'arrays. È ansible? La function che chiama il callback prevede che il callback abbia un parametro. Non controllo il chiamante del callback perché fa parte di una libreria esterna. Qualsiasi aiuto è apprezzato.

for (var i = 0; i < 20; i++) { callbackDB[i] = function(data) { alert(i); } } 

Poiché i viene valutato quando viene chiamata la function, occorre applicare tale valore di i in un'esecuzione di una nuova function per mantenere il valore che si prevede.

  // returns a function that closes around the `current_i` formal parameter. var createFunction = function( current_i ) { return function( data ) { alert( current_i ); }; }; // In each iteration, call "createFunction", passing the current value of "i" // A function is returned that references the "i" value you passed in. for (var i = 0; i < 20; i++) { callbackDB[i] = createFunction( i ); } 

Un'altra soluzione che utilizza un object.

 var callbackDB = new Array(); for (var i = 0; i < 20; i++) { callbackDB[i] = { value: i, callback: function() { alert(this.value); } }; } callbackDB[5].callback();