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

时间:2019-02-18 07:29:54

标签: typescript vue.js async-await tslint

enter image description here

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

我不明白怎么了。

已更新: enter image description here

3 个答案:

答案 0 :(得分:0)

尝试返回与Promise的预期通用类型相对应的Promise包装的值,如下所示:

@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()得出结果:

@Action
public async register(registerInfo: Account): Promise<boolean> {
  return await http
            .post('users/', registerInfo)
            .then(res => res.data.success);
}

答案 1 :(得分:0)

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

@Action
public async register(registerInfo: Account): Promise<boolean> {
  const result = await http.post('users/', registerInfo);

  return result.data.success;
}

答案 2 :(得分:0)

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

喜欢 - http.post.toPromise()