upload.onprogressが別の機能になっていると正しく動作しない理由を知っている人は誰ですか?xmlhttprequestが正常に機能しない
コード(プログレスバーがゆっくりと動いて)正常に動作:
xhr.upload.onprogress = function(e) {
if (e.lengthComputable) {
progress.value = (e.loaded/e.total) * 100;
}
};
が、私は機能にそれを置けば、それはもう動作しません。第二のコードで
xhr.upload.onprogress = uploadProgress(event);
function uploadProgress(e) {
if (e.lengthComputable) {
progress.value = (e.loaded/e.total) * 100;
}
}
、進捗状況ファイルのアップロードが完了してから100%にジャンプします。アップロード中に100%にうまく移動します。
私は、提供されたソリューションを試しました。それを関数の外に置く方法はありませんか? uploadProgress(event);
で
function uploadFile(blobFile, fileName) {
...
...
// Listen to the upload progress for each upload.
xhr.upload.onprogress = uploadProgress;
// Progress Bar Calculation why it has to be in uploadFile function..
function uploadProgress(e) {
if (e.lengthComputable) {
progress.value = (e.loaded/e.total) * 100;
}
}
uploaders.push(xhr);
xhr.send(fd);
}
//it does not work if I put it outside the function. is there anyway to do this?
function uploadProgress(e) {
if (e.lengthComputable) {
progress.value = (e.loaded/e.total) * 100;
}
}
と
をあなたは正しかった。..変数進展は)uploadFile(内部にあります。それがうまくいかない理由です。 JavaScriptの優れた習慣は、関数の内部で関数として作るのではなく、何とかひどく見えるでしょう。 のため、var progress = document.createElement( 'progress'); はuploadFile()内にある必要があり、呼び出されるたびにいくつかのプログレスバーが生成されます。だから私はそれをグローバルにすることはできませんvar – Harts
@ user1096900あなたは無名関数 'xhr.upload.onprogress = function(e){}'または匿名ラッパー関数を使うことができます: 'xhr.upload.onprogress = function(e ){uploadProgress(e、progress);} '。 – ComFreek