我收到错误“无法读取未定义的属性‘then’”
2020-11-20
4641
我收到此错误:
TypeError: Cannot read property 'then' of undefined in controller
[控制器]
fetchGameData() {
DataModel.getList().then(data => {
console.log(data);
})
}
[DataModel]
export default {
getList() {
fetch('URL')
.then((res) => {
return Promise.resolve(res.json());
})
.catch((err) => {
console.log("Fetch Error!!!", err);
})
}
}
3个回答
实际上,错误已经很明显了。您的函数
getList()
不会返回任何在 JavaScript 中
undefined
的内容。您应该在函数末尾返回“something”。如果您想在函数的返回值上使用
.then
,您可能希望返回一个
“Promise”
fetch
函数无论如何都会返回一个
Promise
。所以可以简单地返回它。您可以在
此处 https://javascript.info/fetch
因此,更简洁的替代方案是
export default {
getList() {
return fetch('URL')
.then((res) => {
return Promise.resolve(res.json());
})
.catch((err) => {
console.log("Fetch Error!!!", err);
})
}
}
canbax
2020-11-20
您需要返回一个
promise
来执行
.then
export default {
getList() {
return new Promise((resolve, reject) => {
fetch("URL")
.then((res) => {
resolve(res.json());
})
.catch((err) => {
console.log("Fetch Error!!!", err);
});
});
},
};
Aditya Menon
2020-11-20
[服务]
async function getList() {
const result = await fetch('URL')
.then((res) => {
return Promise.resolve(res.json());
})
.catch((err) => {
console.log("Fetch Error!!!", err);
})
return result.json();
}
[控制器]
fetchGameData() {
DataModel.getList().then(data => {
console.log(data);
})
}
Khanh Le Tran
2020-11-20