0

我希望你身体健康。我正在使用离子和反应开发一个简单的移动应用程序。我正在使用 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) 包含实际的用户名。但是当我将其值分配给会话变量时。会话变量变得未定义。我不知道如何从这个函数中获取会话值。请帮我解决这个问题。谢谢

4

2 回答 2

1

我认为你不能。包裹的代码then()是异步执行的,这意味着你不知道先执行什么:session = p3console.log(session). 也许这个问题会有所帮助? 如何访问承诺的价值?

于 2020-03-26T21:06:04.377 回答
0

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

于 2020-03-26T21:06:45.283 回答