FileReader输出未定义
FileReader output undefined
我有一个函数,它以Blob为输入,并吐出二进制字符串(理想情况下应该是)
function chunkBinary(chunkFile){
var reader = new FileReader();
reader.onloadend = (function(reader)
{
return function()
{
console.log(reader.result);
return reader.result
}
})(reader);
reader.readAsBinaryString(chunkFile);
}
我将此函数分配给另一个函数中的变量
function showUploadProgress(){
for (var i=0; i<chunk.length; i++) {
if(chunk[i][0] != 'No Error'){
errorUploadFiles[j] = chunk[i];
j++;
}
//j starts from 4 as chunk[i][0..3] has some file data and then the blobs start from 4
for(var j = 4; j < chunk[i].length ; j++){
var chunkInBinary = chunkBinary(chunk[i][j]);
console.log(chunkInBinary);
}
}
问题是chunkInBinary的值总是未定义的,当我在chunkBinary函数中打印它时,我可以查看它。我曾尝试使用闭包,但由于某种原因,我无法使其工作。请提出建议。
正如其他人所指出的,chunkBinary()现在没有返回任何内容(您的return result;
语句特别返回给任何人,因为onloadend是由框架本身调用的,所以值会被丢弃)。
因为FileReader执行异步读取,所以不能直接从中返回值
function chunkBinary(chunkFile){
return new Promise(
function(resolve, reject) {
var reader = new FileReader();
reader.onloadend = (function(reader)
{
function()
{
console.log(reader.result);
resolve(reader.result);
}
})(reader);
reader.readAsBinaryString(chunkFile);
});
}
然后,当读取完成时,调用者将可以访问这样的值:
chunkBinary(file).then(function(binaryString) {
// do something with result here
});
相关文章:
- Node.js/Express未输出console.log,highcharts.js给出未定义的错误
- JS函数只返回未定义的数据,但alert输出正确的数据
- '未定义'当需要模块时输出
- 具有中文字符但输出的JSON.parse数据变为“;未定义”;
- 为什么我的输出未定义
- IE9中的有效输出,但IE7/IE8中的未定义输出
- 当在 Javascript 中使用许多 for 循环时,输出是未定义的
- 它无法正常工作,它输出未定义
- 使用 PHP 输出的 Javascript 数组时出现未定义错误
- 为什么简码输出中的值“未定义” - tinyMCE
- Vue.js 使用 Vuex 和自定义组件,@click方法输出未定义
- 为什么 javascript 对象在循环遍历数组时输出为“未定义”
- 为什么我得到未定义的输出Javascript
- 对象未定义/HTML使用jQuery输出
- 未定义获取输出而不是对象属性
- 为什么当我将变量记录到控制台时,我得到了输出,但是当我返回它时,我收到“未定义”
- 函数对数组元素进行编号输出“;未定义”;
- 带有Ajax的JavaScript和HTTP请求输出未定义的显示2
- Handlebars追加'未定义'在助手输出上
- 对象实例为其输出“未定义”'s原型'的属性.为什么?