如何从异步方法中提取值并将值放入 apolloProvider 变量中?

How to extract value from async method and put value in apolloProvider variable?

我想从异步方法中提取值 extractZMockClient 并将此值放入属性的 apolloProvider 变量中:defaultClient 和 clients。

我已经这样做了,但是在 console.log(apolloProvider()) 我得到了:

const ZMockClient = async () => import("z-mock-client")

const extractZMockClient = async () => {
    try {
        const callZMockClient = await ZMockClient()
        return callZMockClient.mockedClient
    } catch (ex) {
        throw new Error(ex)
    }
}

const apolloProvider = new VueApollo({
    defaultClient: MOCKED_UI ? extractZMockClient() : v2,
    clients: {
        v2: MOCKED_UI ? extractZMockClient() : v2
    }
})

我认为你在这里遗漏了一个 await

const ZMockClient = async () => await import("z-mock-client")

extractZMockClient 隐含了一个 returned 承诺,它用您的 returned 值解析。要获得您的价值,请使用

extractZMockClient().then(function(result){ 
    // create your apollo
})

结果对应于你在extractZMockClientreturn中的return

建议:扔掉提取物,直接使用

ZMockClient().then((response)=>{ 
    // dostuff
}).catch((error)=>{console.error(error)})

因为您将它与 await 一起使用 return 这是一个承诺 ;)