@historydev
Острая аллергия на анимешников

Почему ответ промиса пустой?

Добрый вечер.Подскажите пожалуйста.Я пытаюсь достать информацию с сервера используя промис,но ответы приходят пустые.

Клиент:
const sendMenu = ms => {
				return new Promise(r => setTimeout(() => r(), ms))
			}

			const url = 'http://localhost:3000/menu'

			function fetchTodos() {
				console.log('Fetch todo started...')
				return sendMenu(2000).then(() => {
					return fetch(url)
				})
				.then(response => response)
			}

			fetchTodos()
				.then(data => {
					console.log('Data: ',data)
				})
				.catch(e => console.error(e))


Сервер:
app.post('/menu', (req,res) => {

		let viewmenu;

		connection.query('SELECT * FROM menu', (err, result) => {
			  if(err) {
			    console.error(err);
			    return;
			  }

			  const index = result.reduce((acc, row) => ({...acc, [row.id]: row}), {});
					var menu = [];
					for(const row of result) {
					    if(row.parent_id === 0) {
					      menu.push(row);
					      continue;
					    }
					    const parent = index[row.parent_id];
					    if(!parent) {
					      console.warn(`Undefined parent with id ${row.parent_id}`);
					      continue;
					    }
					    if(!parent.children) {
					      parent.children = [];
					    }
					    parent.children.push(row);
					    
			  }

			  viewmenu = menu;

		});

		const sendMenu = ms => {
			return new Promise(r => setTimeout(() => r(), ms))
		}

		sendMenu(200).then(() => res.send(viewmenu))

})

5dc9a8db1a420266971493.png
  • Вопрос задан
  • 61 просмотр
Пригласить эксперта
Ответы на вопрос 1
@abberati
frontend-разработчик
Потому что сначала уходит ответ, сервера, а потом происходит получение данных из базы. Переместите код ответа внутрь коллбэка получения данных из базы.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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