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

问题描述 投票:0回答:2

enter image description here

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

我无法理解什么是错的。

更新:enter image description here

typescript vue.js async-await tslint
2个回答
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);
}

0
投票

我认为问题是你试图返回await的结果而不是捕获结果并处理它:

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

  return result.data.success;
}
© www.soinside.com 2019 - 2024. All rights reserved.