- 此问题在此处已有答案**:
Waiting for the fetch to complete and then execute the next instruction(2个答案)
How can I return the fetch API results from a function?(5个答案)
昨天关门了。
我的目标是"暂停"* EventListener * 函数,以便通过调用另一个函数(* getCategoriesIDs *)来完成一些工作,该函数返回一个值,我将使用该值继续执行 * EventListener * 函数。
当我在执行后记录 * categoriesIDtoNameMapped * 时,它显示为UNDEFINED。
会非常感激你的帮助。
form.addEventListener("submit", async (e) => {
//do something
try {
let categoriesIDtoNameMapped = await getCategoriesIDs()
console.log(categoriesIDtoNameMapped)
} catch (err) {
console.log(err)
}
//do something with the categoriesIDtoNameMapped
}
function getCategoriesIDs() {
fetch('http://localhost:1337/api/categories', {
method: 'GET',
headers: {
'Content-type': 'application/json',
Authorization: `Bearer ${JWT_TOKEN}`
}
})
.then((response) => {
if (!response.ok) {
throw new Error(`HTTP error! Status: ${response.status}`);
}
return response.json();
})
.then((response) => {
const categoriesIDtoNameMapped = {}
for (let i = 0; i < response.data.length; i++) {
categoriesIDtoNameMapped[response.data[i].id] = response.data[i].attributes.name
}
return new Promise(resolve => {
resolve(categoriesIDtoNameMapped)
});
});
}
2条答案
按热度按时间wydwbb8l1#
塞巴斯蒂安Simon指出了这个问题。getCategoriesIDs没有返回任何东西,因为return语句在.then中,并且函数没有返回任何东西,解决方案:
fkaflof62#
getCategoriesIDs需要是一个异步函数,以便您等待它上面的内容。
要解决这个问题,您需要将getCategoriesIDs作为异步函数,并使用wait进行获取