在反应中将承诺的 return 值分配给外部变量

Assign return value of promise to an external variable in react

希望你身体健康。 我正在使用离子和反应开发一个简单的移动应用程序。我正在使用 sql 数据库,为此我创建了 Api 用于用户注册和登录。每当用户登录时,应用程序都会使用本地存储来存储用户 session。 [存储代码session]

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) 包含实际用户名。但是当我将它的值分配给 session 变量时。 session 变量变为未定义。我不知道如何从这个函数中得到 session 值。请帮我解决这个问题。谢谢

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

Javascript 是一种异步语言。在这里,您的请求需要一些时间才能到达,这就是为什么 javacript 将忽略函数 then() 的原因。您可以使用模拟您的 API 调用的 setTimeout 函数来查看此过程:

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