读取本地文本文件函数不返回字符串类型,而是返回一个void类型

Read Local Text File function not return string type but a void type

本文关键字:返回 类型 void 一个 函数 文件 文本 读取 字符串      更新时间:2023-09-26

我最近在学习JavaScript,发现了这个问题,我的readTextFile函数在这里:

function readTextFile(file)
{
    var rawFile = new XMLHttpRequest();
    rawFile.open("GET", file, false);
    rawFile.onreadystatechange = function ()
    {
        if(rawFile.readyState === 4)
        {
            if(rawFile.status === 200 || rawFile.status === 0)
            {
                var allText = rawFile.responseText;
                // alert(allText);
                return allText;
            }
        }
    };
    rawFile.send(null);
}

我的加载函数:

window.onload = function(){
    var fileUrl = "input.txt";
    var text =  "";
    text = String(readTextFile(fileUrl));
    window.alert(text);
};

输出是"未定义的"。我的"input.txt"文件与js文件位于同一目录中。请帮忙!非常感谢。

readTextFile方法有一个异步ajax调用,该调用有一个回调处理程序onreadystatechange,不会以顺序方式调用。

这个方法readTextFile没有返回这个回调方法之外的任何值,所以你在这里得到了未定义的text = String(readTextFile(fileUrl));

您需要在onreadystatechange回调方法中随时提醒响应值。

function readTextFile(file)
{
    var rawFile = new XMLHttpRequest();
    rawFile.open("GET", file, false);
    rawFile.onreadystatechange = function ()
    {
        if(rawFile.readyState === 4)
        {
            if(rawFile.status === 200 || rawFile.status === 0)
            {
                var allText = rawFile.responseText;
                alert(allText);
            }
        }
    };
    rawFile.send(null);
}