如何解决使对象在JavaScript提取功能之外可访问
我比较两个城市天气的项目 我的问题是我无法访问fetch函数调用之外的对象 我的对象
submitBtn.addEventListener("click",function () {
// getting user data
resultArea.innerHTML = "";
loadingSec.style.display = "block";
const firstCityName = document.getElementById("firstCityName");
const secondCityName = document.getElementById("secondCityName");
// inilize arrays for strong city weather daya for 8 days
const firstCitydata = new Array();
let secondCitydata = [];
// get request date and calulte 8 days bevore and store it in dates array
const dates = req_dates();
let currentReq = [new HisCityDayWeather(),new HisCityDayWeather()];
//fetch each day wether data
for (let i = 0; i < dates.length; i++) {
// first city fetch function call
getData(firstCityName.value,dates[i]).then((data) => {
currentReq[0].name = data.location.name;
currentReq[0].day.push(data.forecast.forecastday[0].day);
currentReq[0].date.push(data.forecast.forecastday[0].date);
});
getData(secondCityName.value,dates[i]).then((data) => {
currentReq[1].name = data.location.name;
currentReq[1].day.push(data.forecast.forecastday[0].day);
currentReq[1].date.push(data.forecast.forecastday[0].date);
stor_in_array(currentReq);
});
}
function stor_in_array(citydata) {
console.log(
`store function call first ctiy length: ${citydata[0].day.length} second ctiy length: ${citydata[1].day.length}`
);
if (citydata[1].day.length === 8 && citydata[0].day.length === 8) {
console.log(`call complte`);
loadingSec.style.display = "none";
build_3Row_table(dates,citydata[0],citydata[1]);
}
}
});
这是我的代码工作的唯一途径,但我必须调用函数“ stor_in_array” 8次 如果第一个提取调用在第二个之前未完成,则不会传递“ stor_in_array”中的条件 如果我尝试调用功能枕头的for循环,则无法访问arraay 提取功能
async function getData(cityName,date) {
try {
let response = await fetch(
`https://api.weatherapi.com/v1/history.json?key=${wKey}&q=${cityName}&dt=${date}`
);
let data = await response.json();
if (response.ok) {
return data;
} else {
return data["error"]["code"];
}
} catch (err) {
console.log(err);
}
}
github存储库:here 在netifly上进行投影:here,当尝试检查网络并按两次比较时,如果您输入正确的名称,第二秒始终有效 注意:我知道有很多工作要做,我仍然在验证
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。