[英]Filereader.Onload fired too early
我嘗試讀取由輸入類型文件(多個)上傳的文件。 代碼如下:
$(document).ready(function() {
$('#convert').on('click', function() {
var files=$('#files')[0].files;
if (!files) return;
for (var i=0; i<files.length; i++) {
var file=files[i];
fr = new FileReader();
fr.onload = (function(received) {
var note=$(fr.result);
});
fr.readAsText(file);
}
});
});
現在我的問題是:甚至在文件加載之前就調用了“ onload”功能。 note
永遠沒有任何內容。 但是,當我在note
之前放置一個斷點-行並等待一會兒時, note
獲取內容。
如此看來,onload()-event的調用為時過早。 我該怎么辦?
(瀏覽器是Chrome)
我用this.result
替換了fr.result
:
fr.onload = (function() {
var note=$(this.result);
});
做到了
您正在將fr
設為全局變量,並且在onload觸發時,由於循環,它將是與您期望的對象不同的對象
嘗試將其包裝在IIFE中以創建閉包並將fr
為局部變量
for (var i = 0; i < files.length; i++) {
(function(file) {
var fr = new FileReader();
fr.onload = function(received) {
var note = $(fr.result);// not sure what intent is here
};
fr.readAsText(file);
})(files[i])
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.