我从另一个编写的.js文件导入功能getWeather
。结果是一个json blob。我已经验证可以返回JSON Blob,但是当我尝试调用getWeather
函数并使用.then等待响应并设置状态时,我得到了TypeError。
getWeather(parseFloat(lat),parseFloat(long)).then((data) =>{
this.setState({weatherType: data.currently.icon, temp: data.currently.temperature})
return data
}).catch((error) => {
console.log(error.message);
})
getWeather
函数在这里:export function getWeather(lat,long) {
const params = {
headers: {
"content-type": "application/json; charset=UTF-8",
"Access-Control-Allow-Origin": "*"
},
method: "GET"
};
fetch(`https://api.com/mykey/${lat},${long}`, params)
.then(function (data) {
return data.json();
})
.then(res => {
console.log(res);
})
.catch(error => {
console.log(error);
});
}
最佳答案
您需要return fetch()
以便使承诺可以从其他功能访问。另外,我可能会处理调用函数中的日志记录和错误,因为当您记录数据时,不再返回它。
export function getWeather(lat,long) {
const params = {
headers: {
"content-type": "application/json; charset=UTF-8",
"Access-Control-Allow-Origin": "*"
},
method: "GET"
};
return fetch(`https://api.com/mykey/${lat},${long}`, params)
.then(function (data) {
if (!data.ok) { return new Error('custom error message here') }
return data.json();
});
}