Skip to content

Commit 53ebe2b

Browse files
committed
fix(example): wait for FileReader and sort marker files by extension in demo.html
loadFset was called synchronously with an empty dataURLs array; FileReader onload callbacks pushed results only after loadFset had already returned. Files were also assumed to arrive in [iset, fset3, fset] order, which is not guaranteed by the OS file picker. Use Promise.all to await all three reads, then sort files by extension before passing to loadFset.
1 parent 419cdb0 commit 53ebe2b

1 file changed

Lines changed: 16 additions & 11 deletions

File tree

example/demo.html

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -60,17 +60,22 @@ <h1>FeatureSET-Display</h1>
6060
}
6161

6262
function fileReader(ev) {
63-
var dataURLs = [];
64-
for (var i = 0; i < 3; i++) {
65-
let reader = new FileReader();
66-
reader.onload = function (event) {
67-
var dataURL = event.target.result;
68-
dataURLs.push(dataURL);
69-
};
70-
reader.readAsDataURL(ev.target.files[i]);
71-
}
72-
loadFset(dataURLs)
73-
}
63+
var files = Array.from(ev.target.files);
64+
var order = ['iset', 'fset3', 'fset'];
65+
files.sort(function (a, b) {
66+
return order.indexOf(a.name.split('.').pop()) -
67+
order.indexOf(b.name.split('.').pop());
68+
});
69+
var promises = files.map(function (file) {
70+
return new Promise(function (resolve, reject) {
71+
var reader = new FileReader();
72+
reader.onload = function (e) { resolve(e.target.result); };
73+
reader.onerror = reject;
74+
reader.readAsDataURL(file);
75+
});
76+
});
77+
Promise.all(promises).then(loadFset);
78+
}
7479
</script>
7580
</body>
7681

0 commit comments

Comments
 (0)