【问题标题】:ES6: How to use await with callbacksES6:如何在回调中使用等待
【发布时间】:2020-01-12 23:23:20
【问题描述】:

这是用 TypeScript 编写的 vue-router 的包装器:

abstract class RoutingHelper {

  // ...

  public static redirectToNamedRoute(targetRouteName: AnyValueOf<typeof NamedRoutes>): Promise<void> {
    return new Promise<void>((resolve: () => void): void => {
      router.push({ name: targetRouteName }, resolve);
    });
  }
}

规则@typescript-eslint/promise-function-async 强制返回Promise 的方法将是async

public static async redirectToNamedRoute(targetRouteName: AnyValueOf<typeof NamedRoutes>): Promise<void> {
    return new Promise<void>((resolve: () => void): void => {
      router.push({ name: targetRouteName }, resolve);
    });
  }

现在require-await 告诉我方法必须包含await 关键字。我如何在这种方法中观察require-await

【问题讨论】:

    标签: javascript typescript ecmascript-6 async-await es6-promise


    【解决方案1】:
     return await new Promise<...>(...);
    

    会让 linter 开心。但老实说,在这里执行该规则没有任何意义。如果您想在返回之前使用承诺结果,那么等待承诺才有意义。

    【讨论】:

    • 或者直接去掉 async 关键字
    • @BalintCsak,感谢您的评论! promise-function-async 规则呢?
    • @JonasWilms,谢谢你的回答。我明白了,所以打破规则require-await 并没有违反 ES6,不是吗?
    • 不,不是。 Linter 规则用于在一般情况而非所有情况中编写最佳实践代码
    • @BalintCsak 在这里都不是强制性的,但它们都是 linter 所必需的。
    猜你喜欢
    • 1970-01-01
    • 2021-05-11
    • 2018-05-16
    • 1970-01-01
    • 2021-06-03
    • 2016-09-03
    相关资源
    最近更新 更多