Показать сообщение отдельно
  #3 (permalink)  
Старый 27.04.2022, 21:53
Аспирант
Отправить личное сообщение для Judgin Посмотреть профиль Найти все сообщения от Judgin
 
Регистрация: 31.05.2021
Сообщений: 32

Сообщение от рони Посмотреть сообщение
Judgin,
отвечает сервер с разными задержками, в разнобой, нужен порядок, вместо push используйте index, строки 61 и 68
Благодарю в очередной раз за помощь! Карму повысить хочу, но не могу). Однако возникла другая проблема. Передаю массив в следующий then, там перебираю его в цикле, нужные мне значения упаковываю в массив, но как этот массив передать за пределы цикла? Получаю ошибку "Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'pages')"


Promise.all(
  newArr.map((title, index) => {
    return new Promise((resolve) => {
      fetch(`https://ru.wikipedia.org/w/api.php?action=query&prop=imageinfo&titles=${title}&format=json&iiprop=url&generator=images&origin=*`)
       	.then(response => {
            return new Promise(() => {
            	response.json()
              	    .then(movieObj => {
              		movieObjArr[index] = movieObj;
              		resolve();
              	    })
                })
            })
     	})
     })
 )
.then(() => {
    newArr2 = [];
    movieObjArr.map(key => {
        firstObjInMovieArr = key;
	secondObjInMovieArr = firstObjInMovieArr.query;
	thirdObjInMovieArr = secondObjInMovieArr.pages;
	fourthObjInMovieArr = Object.values(thirdObjInMovieArr);
	fifthObjInMovieArr = fourthObjInMovieArr[0];
	movieImgUrlArr = fifthObjInMovieArr.imageinfo;
	firstIndex = movieImgUrlArr[0];
	movieImgUrl = firstIndex.url
	newArr2.push(movieImgUrl);
    })
})
.then(() => {
    console.log(newArr2);
})
Ответить с цитированием