什么是JS错误帮助防止打字稿错误,即返回承诺的函数必须是异步@ typescript-eslint / promise-function-async

问题描述

我觉得这是没有必要的。这个错误规则是为了防止诺言返回,没有错误吗?此错误有什么帮助?

我阅读了官方文档https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/promise-function-async.md

但是我不明白这里的真正含义是什么

非异步承诺-从技术上讲,返回函数都可以。处理这些函数结果的代码通常需要同时处理两种情况,这可能会变得复杂

both所指的是解决还是拒绝或其他?

解决方法

改写the rule's documentation中的描述:如果一个函数既可以引发同步错误又返回被拒绝的诺言,那么编写代码来处理它就很困难。此规则可确保一个函数不会执行一项操作,而不会执行两项操作。

例如,如果一个函数可能同时具有同步和异步错误,则处理它们的过程需要像这样:

function example (obj) {
  // this might throw synchronously
  const result = JSON.stringify(obj);
  // This might reject (asynchronously)
  return new Promise((resolve,reject) => {
   if (Math.random() > 0.5) {
     resolve(result);
   } else {
     reject('too bad');
   }
  });
}

try {
  example({ foo: 'bar' })
    .catch(err => {
      // Have to split my error handling to two places,not one    
    });
} catch (err) {
 // Have to split my error handling to two places,not one
}

不只是一个收获

example({ foo: 'bar' })
  .catch(err => {
    // All error handling in one place
  });

与所有棉绒规则一样,如果您发现它没有用,请随时禁用它。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...