Closed dong-lufei closed 1 year ago
<script setup> import { onLaunch } from "@dcloudio/uni-app" import { useThemeStore } from "@/store/theme.js" import { getCurrentInstance } from "vue" const { proxy } = getCurrentInstance() const themeStore = useThemeStore() console.log("app-themeStore.themeName", themeStore.themeName) const { setThemeName } = themeStore console.log(111) onLaunch(async (e) => { console.log(2222) // 请求 token const getTokenRes = await proxy.$http.post("/api/collections/users/auth-with-password", { identity: "xxx", password: "yyy", }) console.log(33333) // 把 token 存入本地缓存 uni.setStorageSync("token", getTokenRes.token) console.log("【 4444 】:", uni.getStorageSync("token")) }) </script>
我把 luch-request 挂载到vue 上了。使用时如上,发现还是异步: 【输出 1 和 2 后,去了首页执行写代码,然后才回来这个app.vue 页面,执行上面初始化生命周期 onLaunch 里的 输出 3 和输出 4 】
找到原因了,是小程序生命周期的问题,在里面写请求就会这样,即使用了async await 它也会同步执行页面代码,不会等这个App.vue里面的 onLaunch 生命周期执行完
我把 luch-request 挂载到vue 上了。使用时如上,发现还是异步: 【输出 1 和 2 后,去了首页执行写代码,然后才回来这个app.vue 页面,执行上面初始化生命周期 onLaunch 里的 输出 3 和输出 4 】