即使服务是异步的,返回值也是一个承诺

Returned value is a promise even though the service is async

我有一个 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** }

如何从对象内部获取值?

正如 VLAZ 指出的那样

You cannot convert a promise to a synchronous value

在您的代码中获取 test 中的值,您应该执行以下操作

const test = await TestService.fetch()

另请参考VLAZ提供的link