Задать вопрос

Как вернуть значения из вложенной функции?

Есть функция getImgDimensions, которая принимает на вход файл с инпута, у которого нужно получить высоту и ширину.

Проблема заключается в том, что я не пойму как вытащить ширину и высоту из этой функции наружу.
На SO нашел вариант с постепенным возвращением функций, но он не подходит в данной ситуации, так я не смогу установить значение для img.src и передать значение в функцию reader.readAsDataURL()

const getImgDimensions = (file) => {
	const reader = new FileReader();

	reader.onload = () => {
		const img = new Image();

		img.onload = () => {
			const height = img.height;
			const width = img.width;

			return { height, width };
		};

		img.src = reader.result;
	};

	reader.readAsDataURL(file);
};
  • Вопрос задан
  • 313 просмотров
Подписаться 2 Средний Комментировать
Решения вопроса 1
JRK_DV
@JRK_DV
Рецепты https://codepen.io/jrkdv/full/LKLXdq
// что-нибудь такое
const getImgDimensions = (file) => {
  return new Promise((resolve, reject) => {
    const reader = new FileReader();
    reader.onload = () => {
      const img = new Image();
      img.onerror = reject;
      img.onload = () => {
        const height = img.height;
        const width = img.width;
        resolve({ height, width });
      };
      img.src = reader.result;
    };
    reader.readAsDataURL(file);
  })
};

// =>>
getImgDimensions('https://.../image.jpg')
  .then(response => console.log(response)); // { height, width }
  .catch(err => console.log(err)); // error
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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