·

异步代码外无法获取到值了,比如下面代码:

let user = 'abc';
axios.post(
    '/login',
    {username: args.username,password: args.password}
).then(res=>{
    user = '123'; // 123
});

console.log(user); // abc

打印出来的是 abc,不是 123,因为 axios 是异步的,下面的打印语句会直接输出,不会等待异步执行结束。如果你要等待那么可以用 asnycawait 语法:

async function test() {
    let user = 'abc';
    const res = await axios.post('/login', {...});
    user = res.data; 
    console.log(user); // 这里打印的就是 res.data
}

具体原理看 MDN 文档:async_function

Replies
2

typo: asnyc -> async

我知道axios是异步请求, 我现在需要全局管理登录用户信息, (现在用的是vue3推荐的pinia状态管理), 我想响应数据放在pinia中管理, 也就是我可以在then()中将数据存入pinia, 但是我在其他地方使用pinia时, 却无法获取到之前存入的数据