我收到错误“无法读取未定义的属性‘then’”

JAE*_*YOO 3 javascript fetch promise

我收到此错误:

类型错误:无法读取控制器中未定义的属性“then”

[控制器]

fetchGameData() {
  DataModel.getList().then(data => {
    console.log(data);
  })
}
Run Code Online (Sandbox Code Playgroud)

[数据模型]

export default {
    getList() {
        fetch('URL')
        .then((res) => {
            return Promise.resolve(res.json());
        })
        .catch((err) => {
            console.log("Fetch Error!!!", err);
        })
    }
}
Run Code Online (Sandbox Code Playgroud)

can*_*bax 6

其实错误已经很明显了。您的函数getList()不会返回 JavaScript 中的任何内容undefined。您应该在函数末尾返回“something”。如果你想使用.then函数的返回值,你可能想返回一个“Promise”

fetch无论如何,函数都会返回一个Promise。所以可以简单地返回它。您可以在此处找到有关 fetch 的更多信息https://javascript.info/fetch

所以一个更简洁的选择是

export default {
    getList() {
        return fetch('URL')
        .then((res) => {
            return Promise.resolve(res.json());
        })
        .catch((err) => {
            console.log("Fetch Error!!!", err);
        })
    }
}
Run Code Online (Sandbox Code Playgroud)