代码之家  ›  专栏  ›  技术社区  ›  aarkerio

关于承诺和返回TypeScript中的类型

  •  -1
  • aarkerio  · 技术社区  · 7 年前

    我有一个接口:

    interface ICustomer {
      id: number,
      first_name: string
     }
    

    async consultApi( id: number ): Promise<any> {
      const customer = await SomeExternalApi.getCustomer(id);
    }
    

    会永远回报你的承诺。据怀疑,我不想要承诺,我想要“SomeExternalApi.getCustomer”方法中类似散列的对象,因此我需要另一个异步函数来“解决”承诺:

    async getCustomer( id: number ): Promise<any> {
      const customer = await consultApi(id: number );
    }
    

    我怎么能做这样的功能:

    getCustomer( id: number ): ICustomer {
      const customer = consultApi(id: number );
    }
    

    我可以尽量避免使用所有的“异步”函数,然后编写如下代码:

    return Promise.then(response => response.json)
    

    在一个非异步函数中,但我敢打赌,问题是我缺乏TS方面的专业知识。总之,TS开发人员如何使用“异步”函数来获取“已解决”的数据并返回一个已实现的接口,而不是承诺?

    0 回复  |  直到 7 年前
        1
  •  2
  •   rh16    7 年前

    不幸的是,异步函数不可能返回承诺以外的任何内容。调用一个API并得到一个结果是和异步操作,因此它需要异步操作。

    return Promise.then(response => response.json)
    

    也帮不了你。你可以打电话 then() Promise 构造函数)以指示在解决承诺后应执行的操作,但其返回值也是一个承诺。

    推荐文章