js如何处理这样的异步问题?

定义一个class类
image.png

使用
image.png

在使用的时候发现在created无法获取authmap的值,大家有什么好思路吗?

阅读 1.9k
2 个回答
        class fun {
            constructor() {
                this.authMap = {}
                // this.initAuth()
            }
            async initAuth() {
                const isshowCreateApp = await getAuthorization()
                this.setAuthMap({ createAuth: isshowCreateApp })
            }
            setAuthMap(authmap) {
                this.authMap = {
                    ...authmap
                }
                console.log(this.authMap, 'this.authMap')
            }
        }
        function getAuthorization() {
           return new Promise((res) => {
                setTimeout(() => {
                    res('666')
                },)
            })
        }
        async function fn() {
            let connector = new fun()
            await connector.initAuth()
            console.log(connector, "this.connector.authMap")
        }
        fn()
这样的话不用改你自己的代码
<script>
import fun from './1.js'
export default {
  data () {
    return {
      connector: new fun()
    }
  },
  watch: {
    'connector.authMap' (newVal, oldVal) {
      console.log(this.connector.authMap);
    }
  }
}
</script>

constructor 里面 this.initAuth 没有 await,但是 constructor 不能是 async 函数。

可以包装一下,或者在外面调用 initAuth

const createConnector = async () => {
    const c = new connector()
    await c.initAuth()
    return c
}

一些建议:

  • 直接给出代码而不是截图,方便调试
  • 类名一般首字母大写
推荐问题
logo
Microsoft
子站问答
访问
宣传栏