javascript - 无法从文本文件返回值
问题描述
我无法从文本文件返回值,当我尝试返回记事本值时出现错误,
错误:未捕获的 ReferenceError:未定义 txtData
function readTextFile(file)
{
//let txtData='';
var rawFile = new XMLHttpRequest();
rawFile.open("GET", "textFiles/"+file, true);
rawFile.onload = function (){
if(this.status===200){
console.log(this.responseText);
let txtData= String(this.responseText);
}
else{
let txtData='';
}
}
rawFile.send();
return txtData;
}
var taskStatus=readTextFile("file1.txt")
if(taskStatus==='complete')
{
console.log('completed..')
}
else{
console.log('Not completed..')
}
解决方案
当您使用 声明变量时let txtData='';
,其范围仅限于声明它的块 - 这就是let
关键字的语义。else {...}
因此,该变量在块外不可用。
然而,这里有一个更深层次的问题。txtData
您正在为异步事件处理程序分配一个值;因此,你不能从readTextFile
函数返回这个值,除非让它成为异步的,或者等待处理程序运行(这会使它变成同步的)。我鼓励你阅读MDN中关于 JS 异步编程的教程。
推荐阅读
- python - 尝试得到凸性缺陷但得到错误
- docker-compose - 在 cypress docker-compose setup 上运行特定的规范文件
- typescript - 让赛普拉斯正确登录到 Auth0
- reactjs - 屏幕上仅显示 1 张卡片或 4 张卡片连续反应和 antd。帮助我是新手
- sql - 返回每行中每组的平均值
- image - Google Docs:如何使用 Google 表格单元格中的 URL 替换图像
- python-3.x - 如何为通过 K-means 获得的集群绘制带有工具提示的 3-D 图形
- lazy-evaluation - 计算在按名称调用和按需要调用下执行的中缀操作
- python - 根据 pyspark RDD 检查列表中的项目
- wpf - 2021 年的 WPF FolderBrowserDialog 中是否需要所有者窗口?