@colorkid

Как вернуть [[PromiseValue]]?

Всем привет.
Есть функция использующая fetch
_getNameOfResident(apiUrl) {
		fetch(apiUrl)
	    .then(response => response.json())
	      .then(function(data) {
	      	this.view.renderNameOfResident(data.name);
	    }).catch (
	    response => {
	      this.view.renderNameOfResident("Uninhabited planet")
	    })
	}


все ок, за исключением того, что this.view.renderNameOfResident(data.name) - data.name выдает [object Promise] и у него же есть [[PromiseValue]] который мне и нужен, но вытащить его не могу.
Как вызвать this.view.renderNameOfResident(data.name), что-бы в data.name было значение из [[PromiseValue]] ?

--------UPDATE--------

если после строчки .then(function(data) { выводить значение в консоль console.log(data.name), то выводит то что нужно, НО ОН игнорирует следующий вывоз метода с data.name - this.view.renderNameOfResident(data.name), а за место этого вызывает функцию из и catch - this.view.renderNameOfResident("Uninhabited planet"), хотя я ее делал на тот случай если вернется undifined или еще что-то "Проблемное". Вот ссылка на репозиторий если что https://github.com/colorkid/swapi на githubpages - https://colorkid.github.io/swapi/
  • Вопрос задан
  • 5263 просмотра
Решения вопроса 1
Negezor
@Negezor
Senior Shaurma Developer
_getNameOfResident(apiUrl) {
	fetch(apiUrl)
		.then(response => response.json())
		.then((data) => {
			this.view.renderNameOfResident(data.name);
		})
		.catch((error) => {
			this.view.renderNameOfResident('Uninhabited planet');
		});
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@andrey_koyta
Мой совет - разберись с async/await. Пишешь к функции async, а await перед fetch(apiUrl).
const response = await fetch(apiUrl) // вернёт сразу значение response (тот самый PromiseValue)

Я сам до сих пор не разобрался с нормальным вытаскиванием из промиса значения :( Подпишусь на вопрос.
Есть вариант сделать "до" функции переменную, а в промисе присвоить значение. После выполнения промиса значение будет в переменной. Больше способов не знаю.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы