XMLHttpRequestを使用して複数のファイルを同時にアップロードしています。私は各ファイルに独自の進捗インジケータを持たせたい。だから、私がアップロードするファイルの配列を得るとき、私はJavascriptを使用してサイクル変数をイベントコールバック関数に渡す方法
for(var i=0; i<files.length; i++)
{
// Create transfer object
var xhr = new XMLHttpRequest();
// Attach progress event handler
xhr.addEventListener('progress', function(e) { showProgress .... });
....
}
のようなサイクルのための内部にそれらのそれぞれのアップロードを開始する問題は、プログレスコールバック関数に正しい「i」の値を渡す方法、です。このように "i"を使用した場合:
xhr.addEventListener('progress', function(e) { console.log(i); });
私は常に最新の "i"値を取得します。場合は、このように定義する:
xhr.addEventListener('progress', (function(i,e) { console.log(i); })(i));
私は正しいが、私は実際に進捗を得ることはありませんイベントオブジェクト "e"を取得します。それを定義する正しい方法は何ですか?
パラメータとしてのi値を期待してforループコンテンツを一つの関数の作成を参照してください。次にfor-loopで関数を呼び出します。 i-valueは参照なしに渡されるため、正常に動作するはずです。 –
letを使用するか、 'xhr.addEventListener( 'progress'、function(i){return function(e){console.log(i);}})()); – Redu