0
基本上,我正在讀取本地文件以向用戶顯示數據內容。這些文件有一個元數據文本部分,後面是一個大的二進制部分。元數據包含正確解析二進制部分所需的重要信息。所以,我使用來解析該文件的模式如下:JavaScript FileReader:確保變量填充多個異步文件讀取
- 獲取文本和二進制偏移
- 解析元數據並保存信息關於二進制解析
- 使用從信息分析二進制數據第2步
我已經設置了多個文件讀取器來完成此操作,並且一切似乎都正常。但是,在開發過程中,我必須小心中間數據的保存方式,以便它可用於二進制解析步驟。
這裏是我創建的基本代碼,使用長文件解析細節更好的可讀性刪除:
function setupReader(obj) {
var reader = new FileReader();
reader.addEventListener("loadend", function(evt) {
...get start/end locations for text and data sections
parseText(obj);
parseData(obj);
});
var blob = obj.file.slice(0, 58);
reader.readAsBinaryString(blob);
}
function parseText(obj) {
var reader = new FileReader();
reader.addEventListener("loadend", function(evt) {
...do lots of stuff and record new properties in obj
// save obj to scope so it's available to parse data section
$scope.file_obj = obj;
});
var blob = obj.file.slice(obj.text_begin, obj.text_end);
reader.readAsBinaryString(blob);
}
function parseData(obj) {
var reader = new FileReader();
reader.addEventListener("loadend", function(evt) {
...populate array in $scope.file_obj from binary data
});
var blob = obj.file.slice(obj.data_begin, obj.data_end);
reader.readAsBinaryString(blob);
}
我的問題是這樣的模式是否保證$scope.file_obj
將在parseData()
可用?
這似乎是這樣,但parseText()
發生得非常快,所以我不確定我是否幸運地完成了它的時間。我想確定我瞭解這種行爲。
謝謝!