在反应中将承诺的 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 = p3
或 console.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
希望你身体健康。 我正在使用离子和反应开发一个简单的移动应用程序。我正在使用 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 = p3
或 console.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