【发布时间】:2022-01-16 21:50:33
【问题描述】:
我有一个 service.ts,它正在向之前从 Apollo GraphQL 获取的数据添加额外的数据。但数据并不重要。重要的是——如何获取返回值?
class TestService implements TestServiceInterface {
public async fetch(): Promise<any> {
const result = await apolloClient.query({
query: gql`
query Query {
Test{
test
}
}
}
}
`,
})
return {
graphTitle: "Test",
graph: "LINE",
};
}
}
export interface TestServiceInterface {
fetch(): Promise<any>;
}
如何从另一个.ts文件中获取TestService的返回值?
const test = TestService.fetch()
export const TestState = (async () => {
return await test
})()
然后:
const initialState = {state: [TestState]}
几乎给了我我需要的东西,但现在在我收到的组件中(仍然是一个错误):
Promise { "_U": 0, "_V": 1, "_W": Object { **I have correct values here** }
如何从对象内部获取值?
【问题讨论】:
-
你仍然需要
await它。即使使用像export const TestState = (async () => { return await test })()Async function returning promise, instead of value 之类的异步 IIFE,您也无法将 Promise 转换为同步值 -
那么在这种情况下我怎么能把它分配给我的
const initialState呢? -
“即使服务是异步的也承诺”没有意义。这正是一个承诺因为服务是异步的。
标签: javascript reactjs graphql apollo