首页 > 解决方案 > 无法从文本文件返回值

问题描述

我无法从文本文件返回值,当我尝试返回记事本值时出现错误,

错误:未捕获的 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..')  
    }

标签: javascript

解决方案


当您使用 声明变量时let txtData='';,其范围仅限于声明它的块 - 这就是let关键字的语义。else {...}因此,该变量在块外不可用。

然而,这里有一个更深层次的问题。txtData您正在为异步事件处理程序分配一个值;因此,你不能从readTextFile函数返回这个值,除非让它成为异步的,或者等待处理程序运行(这会使它变成同步的)。我鼓励你阅读MDN中关于 JS 异步编程的教程。


推荐阅读