Присвоить возвращаемое значение обещания внешней переменной в реакции - PullRequest
0 голосов
/ 26 марта 2020

Надеюсь, вы здоровы и здоровы. Я разрабатываю простое мобильное приложение с использованием ioni c и реагирую. Я использую базу данных sql, и для этого я создал Api для регистрации пользователей и входа в систему. Всякий раз, когда пользователь входит в систему, приложение сохраняет сеанс пользователя с использованием локального хранилища. [Код для хранения сеанса]

Storage.set({
  key: 'currentUser',
  value: username
});

Нет, проблема заключается в следующем: [Код для извлечения сохраненных значений]

let session;
Storage.get({ key: 'currentUser' })
.then(p1 => {
  const p2 = p1.value;
  const p3 = p2.replace(/"/g, "");
  session = p3;

});

console.log(session) //This gives 'undefined'

Здесь переменная (p3) содержит фактическое имя пользователя. Но когда я присваиваю его значение переменной сеанса. Переменная сеанса становится неопределенной. Я не знаю, как получить значение сеанса из этой функции. Пожалуйста, помогите мне исправить это. Спасибо

Ответы [ 2 ]

1 голос
/ 27 марта 2020

Я думаю, что вы не можете. Код, заключенный в then(), выполняется асинхронно, что означает, что вы не знаете, что выполняется первым: session = p3 или console.log(session). Может быть, этот вопрос поможет? Как получить доступ к значению обещания?

0 голосов
/ 27 марта 2020

Javascript - асинхронный язык. Здесь ваш запрос займет некоторое время до прибытия, и поэтому javacript будет игнорировать функцию then(). Вы можете увидеть этот процесс, используя функцию setTimeout, которая эмулирует ваш вызов API:

let session;

setTimeout(() => {
  // This will be executed after 500ms but javascript go ahead and execute the other console log
  session = 'test';
  console.log(session);
}, 500);

console.log(session) // Is executed first
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...