Fetch(...) не останавливается для получения с помощью Spotify API ⇐ Javascript
-
Гость
Fetch(...) не останавливается для получения с помощью Spotify API
Эта функция — для получения доступа к тому, что текущий слушатель слушает через API Spotify, который постоянно извлекается:
const getCurrentSong = () => { fetch('/spotify/current-song').then((response) => { // проверяем, если не ок если(!ответ.ок){ возвращаться {} } еще { вернуть ответ.json(); } }).then((данные) => { setSong (данные); console.log(данные); }); } При проверке я вижу, что данные JSON постоянно распечатываются. С другими инструкциями выборки это не так. Это полный код: комната.js:
import React, { useState } из 'реагировать'; импорт {useNavigate, useParams} из 'реагировать-маршрутизатор-дом'; импортировать {Сетку, Кнопку, Типографику} из "@mui/material"; импортировать {ссылку} из 'реагировать-маршрутизатор-дом'; импортировать CreateRoomPage из './CreateRoomPage'; функция Комната(реквизит) { const [votesToSkip, setVotesToSkip] = useState(3); const [guestCanPause, setGuestCanPause] = useState(false); const [isHost, setIsHost] = useState (false); const [showSettings, setShowSettings] = useState (false); const [spotifyAuthenticated, setSpotifyAuthenticated] = useState (false); const [песня, setSong] = useState({}); константные параметры = useParams(); const roomCode = params.roomCode; const аутентифицироватьSpotify = () => { // отправляем запрос fetch('/spotify/is-authenticated').then((response) => response.json()).then((data) => { setSpotifyAuthenticated(data.status); если (!data.status) { fetch('/spotify/get-auth-url').then((response) => response.json()).then((data) => { окно.location.replace(data.url); // перенаправление на страницу авторизации Spotify }) } }) } const getRoomdetails = () => { fetch('/api/get-room' + '?code=' + roomCode).then((response) => { если(!ответ.ок) { реквизит.leaveRoomCallback(); перейти("/"); } //console.log("тест"); вернуть ответ.json() }) .then((данные) => { setVotesToSkip(data.votes_to_skip); //console.log("test1"); setGuestCanPause(data.guest_can_pause); setIsHost(data.is_host); если (isHost){ аутентифицироватьSpotify(); } }); } const Navigation = useNavigate(); const LeaveButtonPressed = () => { const requestOptions = { метод: «ПОСТ», заголовки: {"Content-Type": "application/json"} } fetch('/api/leave-room', requestOptions).then((_response) => { реквизит.leaveRoomCallback(); перейти("/"); }) } const updateShowSettings = (значение) => { setShowSettings (значение) } const renderSettingsButton = () => { // кнопку настроек нужно показывать только в том случае, если пользователь является хостом // лучше, чем жесткое кодирование возвращаться( updateShowSettings(true)}> Настройки ); } const renderSettings = () => { возвращаться ( updateShowSettings(false)}> Закрывать ); } const getCurrentSong = () => { fetch('/spotify/current-song').then((response) => { // проверяем, если не ок если(!ответ.ок){ возвращаться {} } еще { вернуть ответ.json(); } }).then((данные) => { setSong (данные); console.log(данные); }); } ПолучитьПодробностиКомнаты(); получить текущую песню(); {если (showSettings) { вернуть настройки рендеринга(); }} возвращаться ( Код: {roomCode} {isHost? renderSettingsButton(): ноль} Покинуть комнату ); } экспорт комнаты по умолчанию; Ожидал только один вывод на консоль. Иногда вывод отсутствует, и выводится эта ошибка: Uncaught (в обещании) SyntaxError: Неожиданное завершение ввода JSON при eval (Room.js:115:25) несколько раз, после чего данные json печатаются правильно. Просмотрел этот код и код из файлов django и не нашел ничего, что могло бы привести к зацикливанию
Эта функция — для получения доступа к тому, что текущий слушатель слушает через API Spotify, который постоянно извлекается:
const getCurrentSong = () => { fetch('/spotify/current-song').then((response) => { // проверяем, если не ок если(!ответ.ок){ возвращаться {} } еще { вернуть ответ.json(); } }).then((данные) => { setSong (данные); console.log(данные); }); } При проверке я вижу, что данные JSON постоянно распечатываются. С другими инструкциями выборки это не так. Это полный код: комната.js:
import React, { useState } из 'реагировать'; импорт {useNavigate, useParams} из 'реагировать-маршрутизатор-дом'; импортировать {Сетку, Кнопку, Типографику} из "@mui/material"; импортировать {ссылку} из 'реагировать-маршрутизатор-дом'; импортировать CreateRoomPage из './CreateRoomPage'; функция Комната(реквизит) { const [votesToSkip, setVotesToSkip] = useState(3); const [guestCanPause, setGuestCanPause] = useState(false); const [isHost, setIsHost] = useState (false); const [showSettings, setShowSettings] = useState (false); const [spotifyAuthenticated, setSpotifyAuthenticated] = useState (false); const [песня, setSong] = useState({}); константные параметры = useParams(); const roomCode = params.roomCode; const аутентифицироватьSpotify = () => { // отправляем запрос fetch('/spotify/is-authenticated').then((response) => response.json()).then((data) => { setSpotifyAuthenticated(data.status); если (!data.status) { fetch('/spotify/get-auth-url').then((response) => response.json()).then((data) => { окно.location.replace(data.url); // перенаправление на страницу авторизации Spotify }) } }) } const getRoomdetails = () => { fetch('/api/get-room' + '?code=' + roomCode).then((response) => { если(!ответ.ок) { реквизит.leaveRoomCallback(); перейти("/"); } //console.log("тест"); вернуть ответ.json() }) .then((данные) => { setVotesToSkip(data.votes_to_skip); //console.log("test1"); setGuestCanPause(data.guest_can_pause); setIsHost(data.is_host); если (isHost){ аутентифицироватьSpotify(); } }); } const Navigation = useNavigate(); const LeaveButtonPressed = () => { const requestOptions = { метод: «ПОСТ», заголовки: {"Content-Type": "application/json"} } fetch('/api/leave-room', requestOptions).then((_response) => { реквизит.leaveRoomCallback(); перейти("/"); }) } const updateShowSettings = (значение) => { setShowSettings (значение) } const renderSettingsButton = () => { // кнопку настроек нужно показывать только в том случае, если пользователь является хостом // лучше, чем жесткое кодирование возвращаться( updateShowSettings(true)}> Настройки ); } const renderSettings = () => { возвращаться ( updateShowSettings(false)}> Закрывать ); } const getCurrentSong = () => { fetch('/spotify/current-song').then((response) => { // проверяем, если не ок если(!ответ.ок){ возвращаться {} } еще { вернуть ответ.json(); } }).then((данные) => { setSong (данные); console.log(данные); }); } ПолучитьПодробностиКомнаты(); получить текущую песню(); {если (showSettings) { вернуть настройки рендеринга(); }} возвращаться ( Код: {roomCode} {isHost? renderSettingsButton(): ноль} Покинуть комнату ); } экспорт комнаты по умолчанию; Ожидал только один вывод на консоль. Иногда вывод отсутствует, и выводится эта ошибка: Uncaught (в обещании) SyntaxError: Неожиданное завершение ввода JSON при eval (Room.js:115:25) несколько раз, после чего данные json печатаются правильно. Просмотрел этот код и код из файлов django и не нашел ничего, что могло бы привести к зацикливанию
Мобильная версия