is there any way i can fetch the result object of a FileReader() without getting through a function ?
i have made a sample code below:
HTML
<br /> <br /> <br />
<div>
</div>
JS
var code = "lorem ipsum";
$("input[type='file']").change(function() {
var upload = this.files[0];
var reader = new FileReader();
reader.onload = function() {
code = reader.result;
$("div").append("<label>this should appear first: " + code + "</label> <br />");
};
reader.readAsDataURL(upload);
$("div").append("<label> this should appear last: " + code + "</label> <br />");
});
the problem with this code is that the reader.onload = ...
line is skipped and is run right after the last line of the script. not the usual top to bottom reading of a code. and so, when this code is run, you will receive an exact result as below:
this should appear last: asd
this should appear first: data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/7QC+...
notice that this should appear last
appears first before this should appear first
.
whereas as if according to the script if it is read from top to bottom, this should appear first
must appear before this should appear last
.
this is where i apply my conclusion that the reader.onload...
line is skipped all throughout and is run before the script ends.
this is where my dilemma begins, i need to find an alternative code where i don't have to use a function on reader.onload
. simply assigning reader.onload = reader.result
does not work.
with this current code, the first run of the script returns code
as lorem ipsum
and on the second run returns data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/7QC+...
. but i need code
to be data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/7QC+...
right after the script is executed on its first time.
sorry for my confusing explanation. i am not very fond of expressing myself in english since it is not my native language. thank you