JSON.parse(Fetch_Get_JSON_Data) в асинхронной функции

#javascript #node.js #json #asynchronous #fetch

#javascript #node.js #json #асинхронный #выборка

Вопрос:

Я наткнулся на проблему, когда я пытался проанализировать входящий объект .JSON в асинхронном запросе Fetch-Get, он выдал мне следующую ошибку в браузере:

 Uncaught (in promise) SyntaxError: Unexpected token o in JSON at position 1
    at JSON.parse (<anonymous>)
    at window.getData (Login.js:32)
    at async window.login (Login.js:38
 

Это соответствующий предварительно просмотренный код:

 window.getData = async function()
{
var response = await fetch("https://goldengates.club:3000/api/blocks");
var chain = await response.json();
var chainParsed = JSON.parse(chain);
return chainParsed;
}

window.login = async function()
{
  const chain = await getData(); //might need to parse this
  console.log(chain);
}
 

Функция входа в систему, описанная выше, вызывается при нажатии кнопки во внешнем интерфейсе.

Я, очевидно, делаю что-то не так, и это меня беспокоит, я довольно новичок в асинхронной обработке, и любая помощь очень ценится.

Комментарии:

1. response.json() анализирует строковые данные в объект JavaScript. JSON.parse() пытается проанализировать уже проанализированные данные. Исправьте это, удалив JSON.parse() строку и вернув chain .

Ответ №1:

Похоже, ошибка возникает из-за последних двух строк windows.getData .

Возможно, вашим мотивом было вернуть свойства из этого api, упомянутого в var ответе.

 const url = ""https://goldengates.club:3000/api/blocks"";

window.getData = async () => 
{
var response = await fetch(url);
var chain = await response.json();

return (
{chain.map((everyChain) => {
const { timestamp, lasthash, hash, data, nounce, difficulty, type } = everyChain;
   return everyChain;
 }});
}