Функция выборки Javascript возвращает [object Promise]

В настоящее время я работаю над проектом, который включает веб-сайт, созданный и управляемый Django. На этом веб-сайте я пытаюсь загрузить данные через быстрый API и пытаюсь загрузить эти данные через JavaScript и API Fetch. Но я всегда получаю вместо данных, предоставленных через API, [object Promise]. Я пробовал много разных методов, но ни один из них не работает.

Я пробовал, например:

document.getElementById("1.1").innerHTML = fetch('the URL')
 .then(response => response.text())

или

document.getElementById("1.1").innerHTML = fetch('the URL')
.then(response => response.text())
.then((response) => {
    console.info(response)
})

и многие другие методы. Я также проверил, и запрос API работает отлично, возвращая строку.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
108
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы хотите, чтобы настройка html отображалась при регистрации окончательного ответа, например:

fetch('the URL')
.then(response => response.text())
.then((response) => {
    console.info(response)
    document.getElementById("1.1").innerHTML = response
})

Другие способы, в том числе выполнение обещания всего ответа:

const getData = async (url) => {
  const res = await fetch(url)
  const resText = await res.text()
  return resText
}
const addTextFromUrl = async (url, element) => {
  const text = await getData(url)
  element.innerHtml = text
}
addTextFromUrl('theUrl', document.getElementById("1.1"))

Как правило, при обучении немного проще следовать синтаксису async/await, но вы всегда должны пытаться/отлавливать любые ошибки.

Каждый вызов .then возвращает новое обещание. Так

Вам нужно присвоить значение в обратном вызове или использовать async/await

fetch('the URL')
.then(response => response.text())
.then((response) => {
    document.getElementById("1.1").innerHTML = response
})

или сделать это внутри асинхронной функции

async function getHtml() {
  document.getElementById("1.1").innerHTML = await fetch('the URL')
   .then(response => response.text())
}

getHtml();

Без использования then

async function getHtml() {
  const response = await fetch('the URL');

  const html - await response.text();

  document.getElementById("1.1").innerHTML = html;
}

getHtml();

Каким-то образом, если я попробую это, он действительно не вернет [object Promise], а вместо этого будет пустым. Я проверил URL-адрес, и он выглядит нормально, возвращая строку. Любая идея, почему это происходит?

Levi.mbc 11.11.2022 15:15

@Levi.mbc Убедитесь, что document.getElementById("1.1") возвращает что-либо, возможно, вы просто получаете сообщение об ошибке.

Yury Tarabanko 11.11.2022 15:19

Спасибо за подсказку! Я заглянул внутрь консоли и обнаружил, что теперь она возвращает ошибку, связанную с контролем доступа.

Levi.mbc 11.11.2022 15:42

@Levi.mbc Возможно, const html - await response.text() должно быть const html = response.text()

tlietz 11.11.2022 17:30

@tlietz Вам нужно подождать. В противном случае вы получите Promise<string>. developer.mozilla.org/en-US/docs/Web/API/Response/text

Yury Tarabanko 11.11.2022 17:54

Другие вопросы по теме

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