所以我试图将项目推送到数组,尽管数组中有项目,但返回的长度似乎为0。
let calendarDates = []
async function getDates() {
const response = await fetch('/calendars/fetch_dates')
let res = await response.json()
res.forEach(el => {
calendarDates.push(el)
})
}
getDates()
createCalendar(date, side)
.
.
.
function createCalendar(date, side) {
console.log('createCalendar', calendarDates, "is array?", Array.isArray(calendarDates), 'length', calendarDates.length)
.
.
}
我的console.log正在打印calendarDates和length: array
console.log位于单独的函数中
那么为什么长度返回0? 当尝试控制台记录一个forEach循环时,什么也没有返回,所以我不认为它的浏览器显示了错误的值
答案 0 :(得分:1)
这会有所帮助
async function Main() {
let calendarDates = []
calendarDates = await getDates();
createCalendar(date, side)
}
async function getDates() {
const response = await fetch('/calendars/fetch_dates')
return await response.json();
}
function createCalendar(date, side) {
console.log('createCalendar', calendarDates, "is array?", Array.isArray(calendarDates), 'length', calendarDates.length);
}
Main();
答案 1 :(得分:1)
getDates
是异步功能。因此,如果您致电:
getDates()
createCalendar(date, side)
createCalendar
可能会在getDates()成功执行之前被调用。异步,承诺非常重要,您应该认真练习和研究它们。