javascript - 我得到错误 "Cannot read property ' 然后'未定义'

标签 javascript promise fetch

我收到这个错误:

TypeError: Cannot read property 'then' of undefined in controller

[ Controller ]

fetchGameData() {
  DataModel.getList().then(data => {
    console.log(data);
  })
}

[数据模型]

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

最佳答案

其实错误已经很清楚了。您的函数 getList() 不会返回任何在 JavaScript 中将被 undefined 的内容。你应该在你的函数结束时返回“something”。如果你想在函数的返回值上使用 .then,你可能想要返回一个 "Promise"

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

所以一个更简洁的选择是

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

关于javascript - 我得到错误 "Cannot read property ' 然后'未定义',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64925342/

相关文章:

javascript - Observables 中的 Promise.all 等价物是什么?

javascript - 即使断言在柏树中失败,测试仍然成功

服务器端用于扩展 Javascript 核心的 Javascript 框架?

javascript - 检索 jquery-ui 对话框的 div

javascript - 超时后重定向到其他 View

javascript - Mongoose 批量保存 promise

javascript - 防止 Bootstrap 模式窗口在新选项卡/窗口中打开

javascript - vue-resource: 拦截ajax错误时捕获 "Uncaught (in promise)"

javascript - 等待子组件获取数据,然后渲染

vue.js - 如何在 Vue 3 中获取数据?