Monday, June 3, 2024
 Popular · Latest · Hot · Upcoming
103
rated 0 times [  110] [ 7]  / answers: 1 / hits: 78445  / 12 Years ago, mon, august 6, 2012, 12:00:00

I use JS FileReader. I want to get result after file reading operation and work with this data. FileReader is asynchronous and I don't know when result is ready. How to get it done right?



$(document).ready(function(){
$('#file_input').on('change', function(e){
var res = readFile(this.files[0]);

//my some manipulate with res

$('#output_field').text(res);
});
});

function readFile(file){
var reader = new FileReader(),
result = 'empty';

reader.onload = function(e)
{
result = e.target.result;
};

reader.readAsText(file);

//waiting until result is empty?

return result;
}


http://jsfiddle.net/ub22m/4/



It's show empty.



How to wait until result is empty?
Another way?


More From » html

 Answers
35

Reading happens asynchronously. You need to provide a custom onload callback that defines what should happen when the read completes:



$(document).ready(function(){
$('#file_input').on('change', function(e){
readFile(this.files[0], function(e) {
// use result in callback...
$('#output_field').text(e.target.result);
});
});
});

function readFile(file, onLoadCallback){
var reader = new FileReader();
reader.onload = onLoadCallback;
reader.readAsText(file);
}


(See the Fiddle.)



Note that readFile does not return a value.  Instead, it accepts a callback function, which will fire whenever the read is done. The $('#output_field').text operation is moved into the callback function. This ensures that that operation will not run until the reader's onload callback fires, when e.target.result will be filled.



Programming with callbacks is a bit difficult to get right at first, but it is absolutely necessary for implementing advanced functionality.


[#83821] Saturday, August 4, 2012, 12 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
taliac

Total Points: 84
Total Questions: 114
Total Answers: 114

Location: Morocco
Member since Fri, May 22, 2020
4 Years ago
taliac questions
Sun, Mar 21, 21, 00:00, 3 Years ago
Tue, May 12, 20, 00:00, 4 Years ago
Mon, Jan 13, 20, 00:00, 4 Years ago
;