异步代码外无法获取到值了,比如下面代码:
let user = 'abc';
axios.post(
'/login',
{username: args.username,password: args.password}
).then(res=>{
user = '123'; // 123
});
console.log(user); // abc
打印出来的是 abc,不是 123,因为 axios 是异步的,下面的打印语句会直接输出,不会等待异步执行结束。如果你要等待那么可以用 asnyc
和 await
语法:
async function test() {
let user = 'abc';
const res = await axios.post('/login', {...});
user = res.data;
console.log(user); // 这里打印的就是 res.data
}
具体原理看 MDN 文档:async_function
看这个帖子站长的回答:忘了在哪看到得了,支持一下
很多人在问技术栈,我把之前的回答补充一下:
前端:react + redux + recoil + router + d3js + i18next + puppeteer(dynamic render for seo) + redux-saga + axios + mswjs(api mock) + jest + tailwindcss + prosemirror + mathjax + material icon + 手写的一堆组件
后端:spring boot + session + security gateway + websocket + zookeeper + sleuth + nacos + snowflakeID + grpc + rocketmq + redis + mysql/pg + nodejs + querydsl + jpa(write)/mybatis(read)
后端可随时切换成单机 docker 部署,抛弃分布式组件。
运维/工具:shell/yaml + serverless + Kubernetes + ci + github + jetbrains 全家桶/vscode + postman + jmeter + xtools/automouseclick(自动化点击机器人) + 一些简单的 python 脚本做爬虫/数据分析