Я пытаюсь перебрать список URL-адресов, поступающих из вызова API. Как я могу сделать этот код синхронным?
Я уже пытался использовать async / await перед итерациями .map (), но он всегда переходит к функции диспетчеризации.
return dispatch => {
let query = `?`;
if (currentPage) query += `page=${currentPage}`;
if (isAlive) query += `&isAlive=${isAlive}`;
if (name) query += `&name=${name}`;
dispatch(fetchCharsStart());
axios
.get(`https://www.anapioficeandfire.com/api/characters${query}`)
.then(({ data }) => data)
.then(characters => {
//Iterating all characters
characters.map(char => {
char.fetchedBooks = [];
//Iterating books for each character...
char.books.map(url => {
axios.get(url).then(({ data }) => {
console.log("Fetching...");
char.fetchedBooks.push({
name: data.name,
release: data.release
});
});
});
});
console.log("Characters: ", characters);
dispatch(fetchCharsSuccess(characters));
})
.catch(err => {
console.log(err);
dispatch(fetchCharsFail(err));
});
};
};
Я ожидал, что журнал fetchChars () будет Fetching...
15 раз и только после этого - массив символов, но я получаю противоположное поведение.