Javascript 函数无法正确返回
Javascript function does't return properly
我写了一个javascript函数来验证文件输入文件:
function valaidateform() {
var fileInput = document.getElementById('file');
message = "";
var file = fileInput.files[0];
var textType = /text.*/;
if (file.type.match(textType)) {
var reader = new FileReader();
reader.onload = function(e) {
filecontent = reader.result.trim();
var res = filecontent.split("'n");
lines = res.length;
if (!(filecontent.substring(0, 1) == ">")) {
alert("Not a proper file Fasta file");
return false;
}
}
reader.readAsText(file);
}
else {
alert("File not supported!");
}
alert("VAlidate function to end now")
return true;
}
//On form submit I call validateform() function
formrequest.submit(function() {
alert(valaidateform());
if (validationstatus == false) {
return false;
}
}
在我的表单提交代码上,我调用此函数来检查文件验证。函数工作正常,因为我可以从函数中获取警报消息,但警报消息VAlidate function to end now
在Not a proper file Fasta file
之前显示,并且函数始终返回 true 给调用方函数 为什么会这样?我该如何解决这个问题?
FileReader
异步执行。这意味着在读取文件时,代码执行将继续并命中您的第二个alert
。若要停止此行为,请将依赖于文件读取器的所有代码放在onload
处理程序中:
if (file.type.match(textType)) {
var reader = new FileReader();
reader.onload = function(e) {
filecontent = reader.result.trim();
var res = filecontent.split("'n");
lines = res.length;
if (!(filecontent.substring(0, 1) == ">")) {
alert("Not a proper file Fasta file");
}
alert("Validate function to end now") // note success alert placed here
// call a function here which handles the valid file result
}
reader.readAsText(file);
}
else {
alert("File not supported!");
}
请注意,不能从异步处理程序返回。相反,您需要在异步函数完成后调用一个函数来处理结果。
相关文章:
- 使用返回函数sinde.attr()jquery元素
- 从自执行函数返回函数的Javascript性能命中率
- Node Express Handlebars帮助程序未返回函数的结果
- 未在Firefox中执行PageMethod的返回函数
- 对返回函数的函数感到困惑
- 从承诺返回不返回函数会导致警告
- 从函数返回函数而不调用返回的函数
- Javascript,闭包中的返回函数如何与外部函数连接
- 为什么Coderbyte.com's的Javascript模板喜欢返回函数的原始参数
- 对象函数返回函数而不是值
- 从外部函数(数组)了解返回函数(x)
- 从Javascript类对象返回函数
- 调用Typescript setter don't返回函数,尽管关联的getter可以工作
- 使用依赖注入在 JavaScript 中返回函数
- 通过单击JSP和javascript加载两个返回函数
- 需要说明:无法理解返回函数的javascript
- 简单的onClick返回函数不起作用
- 为什么这个闭包返回函数
- JS函数返回函数供以后使用-未定义参数
- Coffeescription类中的方法返回函数而不是字符串