Я хотел бы получить помощь в решении проблемы, которую я пытаюсь решить, поэтому проблема в том, что мне нужно вызвать два URL-адреса API. второе зависит от первого (в первой выборке я получаю некоторую базовую информацию, включая идентификаторы, во второй выборке я хочу получить данные на основе идентификаторов из первой выборки). я всегда получаю эту ошибку: Uncaught TypeError: Cannot read property 'length' of undefined
, вероятно, мой подход не верен. я пробовал несколько вещей, таких как помещение второй функции внутрь первой, я пытался сделать это без asyn c, она работает только тогда, когда у меня есть две разные кнопки. Я думаю, асин c вызывает эту проблему (пытается получить длину до ответа), пожалуйста, помогите мне с этим. Я хотел бы получить представление о подходе или любом способе его решения. заранее спасибо. это проблема c код
//recipies by ingredients array
var displayData = [];
//full recipies array
var displayRecipes = [];
document.getElementById("search").addEventListener("click", function () {
var l = document.getElementsByClassName("ingInput").length
var ing = document.getElementById('id').value
var ing1 = ''
//getting all the values from the inputs so i can search it in the api url
for(var i = 1; i<l ;i++){
ing1 += ',' + document.getElementsByClassName("ingInput")[i].value
}
//async get request for the api url
async function postData(url = '') {
const response = await fetch(url, {
method: 'GET', // *GET, POST, PUT, DELETE, etc.
headers: {
'Content-Type': 'application/json'
// 'Content-Type': 'application/x-www-form-urlencoded',
},
});
return response.json(); // parses JSON response into native JavaScript objects
}
//the api url with the inputs values for searching by ingredeints
postData('https://api.spoonacular.com/recipes/findByIngredients?ingredients='+ ing + ing1 + '&number=10&apiKey=API_KEY')
.then((data) => {
displayData.push(data); // JSON data parsed by `response.json()` call
console.log('done')
});
})
//second func
document.getElementById("search").addEventListener("click", function () {
//trying to get data from this array, here i have error.
var l = displayData[0].length
var ids = []
for(var i = 0; i<l ;i++){
ids.push(displayData[0][i].id)
}
async function postData(url = '') {
// Default options are marked with *
const response = await fetch(url, {
method: 'GET', // *GET, POST, PUT, DELETE, etc.
headers: {
'Content-Type': 'application/json'
// 'Content-Type': 'application/x-www-form-urlencoded',
},
});
return await response.json(); // parses JSON response into native JavaScript objects
}
postData('https://api.spoonacular.com/recipes/informationBulk?ids='+ids.toString()+'&apiKey=API_KEY')
.then((data) => {
displayRecipes.push(data); // JSON data parsed by `response.json()` call
console.log(displayRecipes)
});
})```