首页 > 解决方案 > JS读取文件onload返回未定义

问题描述

我想从一个目录中读取一个 TXT 文件,我有这个工作正常的代码

window.onload = () => {
  fetch("file.txt")
    .then(res => res.text())
    .then(data => {
      console.log(data);
    });
};

但我想在这样的函数中执行 fetch 调用:

window.onload = () => {
  const filePath = "file.txt";
  const fileData = readDataFile(filePath);
  console.log(fileData);
};

const readDataFile = path => {
  fetch(path)
    .then(res => res.text())
    .then(data => {
      return data;
    });
};

但在这种情况下,它返回undefined.

它的另一个问题是,如果发生错误,我无法捕捉到,我尝试添加catch承诺和throw错误,但它不起作用。这是我尝试过的:

window.onload = () => {
  fetch("file.txt")
    .then(res => res.text())
    .then(data => {
      console.log(data);
    })
    .catch(err => {
      throw new Error("ERROR!");
    });
};

谢谢 :)

这有效:

const readDataFile = async path => {
    try {
        const response = await fetch(path);
        const data = await response.text();
        return data;
    } catch (err) {
        console.log('Cannot read file.');
    }
}

window.onload = async () => {
    const filePath = 'data.txt';
    const fileData = await readDataFile(filePath);
    console.log(fileData);
}

但同样,catch 方法不起作用?我做错了吗?

标签: javascriptajaxpromisefetch

解决方案


推荐阅读