bemdev
@bemdev

Как дописать значение к массиву если его надо получить промисом или задержкой?

results = results.slice(0, 1);
  for (const key in results) {
    if (results.hasOwnProperty(key)) {
      const element = results[key];
      element.introtext = h2p(element.introtext);
      element.fulltext = h2p(element.fulltext);
                    
      clientGI.search(element.title)
        .then(images => {
          element.images = images.map(image => [image.url, image.thumbnail]);
        });
    }
  }


Добрый день! Как мне дождаться моих картинок и потом обновить поле в массиве и отдать этот массив как resolve ? Помогите пожалуйста советом!
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
bemdev
@bemdev Автор вопроса
const waitLoad = [];

results = results.slice(0, 1);
for (const key in results) {
  if (results.hasOwnProperty(key)) {
    const element = results[key];
    element.introtext = h2p(element.introtext);
    element.fulltext = h2p(element.fulltext);
    
    // добавим промис полученный в         
    waitLoad.push(
      clientGI.search(element.title)
      .then(images => {
        element.images = images.map(image => [image.url, image.thumbnail]);
        // возвращаем промис который всегда выполнится
        return Promise.resolve(element);
      });
    );
  }
}


// когда все картинки загружены выполняем какие либо действия с ними
Promise.all(waitLoad).then(values => { 
// ...
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Что-то типа такого:
function getWithImages(result) {
	return new Promise((res, rej) => {
		
		const elPromises = [];
		
		for (let key in result) {
		  if (!result.hasOwnProperty(key)) continue;
		  const element = result[key];
		  element.introtext = h2p(element.introtext);
		  element.fulltext = h2p(element.fulltext);
		                  
		  elPromises.push(
		  	clientGI.search(element.title)
			  .then(images => {
			    element.images = images.map(image => [image.url, image.thumbnail]);
			  });
		  );
		}
		
		Promise.all(elPromises).then(function() {
			// все готовы
			res(result);
		});
	});
}

const gotImagesPromise = getWithImages(results[0]);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы