Nodejs + reactjs + проверка JWT - PullRequest
0 голосов
/ 15 апреля 2020

Во-первых, извините за мой английский sh ... Я пытаюсь узнать, как встроить логин JWT и частный маршрутизатор в Reactjs ... я создаю простую серверную систему в nodeJS (регистрация пользователей, список, создать токен JWT и проверить JWT), который работает нормально (я думаю) ... Проблема заключается в реакции, когда запрос GET в API verifyToken (в файле IsAuthenticated), его возвращение true или false, теоретически его работает ( первое изображение) ... поэтому, когда я экспортирую этот файл и импортирую в Routes. js это не возвращает истину или ложь, как вы видите на изображении 2, это возвращает обещание Как я это исправлю?

снова извините за мой английский sh и спасибо за возможную помощь изображение 1 изображение 2

Ответы [ 3 ]

0 голосов
/ 15 апреля 2020

Это ожидаемое поведение. async функции возвращают Promise. Начиная с MDN :

Объявление функции asyn c определяет асинхронную функцию - функцию, которая является объектом AsyncFunction. Асинхронные функции работают в отдельном порядке, чем остальная часть кода, через событие l oop, возвращая неявное обещание в качестве результата .

Вы должны помнить, как только вы выполнить любую асинхронную операцию, которую вы не можете go вернуть, выполнив только синхронные операции в том же потоке.

Вы должны использовать свою функцию isAuthenticated() в ловушке useEffect, которая изменит состояние.

Вы можете использовать функцию следующим образом:

useEffect(() => { 
    isAuthenticated().then(auth=> /*... set the setters hooks or setState ..*/)
});
0 голосов
/ 15 апреля 2020

Это нормально, потому что функция asyn c возвращает Promise.

async function f() {
  return 1;
}

f().then(res => console.log(res)); // 1

Вы можете сделать это, чтобы получить значение

0 голосов
/ 15 апреля 2020

вам нужно использовать «ожидание» или обещание обратного вызова, а не оба:

try {
    const response = await axios.get('/myRequest');
    console.log(response);
  } catch (error) {
    console.error(error);
  }

или как это:

axios.get('/myRequest')
  .then(function (response) {
    // handle success
    console.log(response);
  })
  .catch(function (error) {
    // handle error
    console.log(error);
  })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...