lei-mu / luch-request

luch-request 是一个基于Promise 开发的uni-app跨平台、项目级别的请求库,它有更小的体积,易用的api,方便简单的自定义能力。
https://www.quanzhan.co/luch-request/
MIT License
628 stars 96 forks source link

支持 async、await 嘛 #122

Closed dong-lufei closed 1 year ago

dong-lufei commented 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 】

dong-lufei commented 1 year ago

找到原因了,是小程序生命周期的问题,在里面写请求就会这样,即使用了async await 它也会同步执行页面代码,不会等这个App.vue里面的 onLaunch 生命周期执行完