首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >异步函数的返回类型必须是全局Promise<T>类型

异步函数的返回类型必须是全局Promise<T>类型
EN

Stack Overflow用户
提问于 2019-02-18 15:29:54
回答 3查看 11.3K关注 0票数 7

为什么TSlint仍然说“异步函数或方法的返回类型必须是全局Promise类型”?

我不明白出了什么问题。

更新:

EN

回答 3

Stack Overflow用户

发布于 2019-02-18 15:58:45

尝试返回与预期的Promise泛型类型相对应的Promise-wrapped值,如下所示:

代码语言:javascript
复制
@Action
public async register(registerInfo: Account): Promise<boolean> {
  const res = await http.post('users/', registerInfo);

  return new Promise<boolean>((resolve, reject) => {
    resolve(res.data.success);

    // Or reject() if something wrong happened
  });

  // Or simply return a resolved Promise
  return Promise.resolve(res.data.success);
}

实际上,您还应该能够then()结果:

代码语言:javascript
复制
@Action
public async register(registerInfo: Account): Promise<boolean> {
  return await http
            .post('users/', registerInfo)
            .then(res => res.data.success);
}
票数 4
EN

Stack Overflow用户

发布于 2019-02-19 04:03:22

我认为问题在于您试图返回await的结果,而不是捕获并处理结果:

代码语言:javascript
复制
@Action
public async register(registerInfo: Account): Promise<boolean> {
  const result = await http.post('users/', registerInfo);

  return result.data.success;
}
票数 0
EN

Stack Overflow用户

发布于 2021-07-22 21:29:24

方法http.post返回Observable类型,您可以使用toPromise()方法将其转换为Promise。

Like - http.post.toPromise()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54742307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档