7

我希望在我的团队的代码库中标准化 Q Promise 的使用。当涉及到承诺时,是否有任何好的 jscs 扩展(或其他 linter)来帮助强制执行样式?

我们希望我们的承诺遵循这种形式:

promise()
  .then()
  .catch()
  .done();

并且想要一个 linter 来捕获.then()我们的代码中缺少的任何.catch()

在涉及承诺时,也欢迎提供其他风格提示的建议。

4

1 回答 1

2

@Jeff 这种方法看起来完全是矫枉过正。任何一个都不能跟在这两个函数后面。他们每个人都有不同的目的:

  • then(mapSuccess, mapFail)当您想要处理已解析的值并且您需要一个将使用回调返回的值解析的结果承诺时使用。
    从技术上讲,它是价值到其他价值的映射,将由其他承诺解决。您可能会认为它类似于map将输入数组映射到其他数组的数组,这是某些转换函数的结果。
  • catch(mapFail)纯粹是 的别名then(null, mapFail),所以只需要在需要时使用它,then但不需要传递mapSuccess回调。
  • done(onSuccess, onFail)简单地使用,当您只想处理已解析的值时(无需映射到其他承诺)。done还将确保所有最终错误都自然暴露(then并且catch由于它们是映射器,因此将错误吞入承诺结果中)。

我可以想象只有一个规则,可以为 linter 添加(并且假设您使用不记录吞下异常的库)。当它们的结果被忽略时警告then()catch()使用(它们应该被跟随done(..)或传递给其他实体进行处理)。

于 2015-04-22T08:18:00.983 回答