Javascript 中的 Linting Promises
Linting Promises in Javascript
我希望在我的团队的代码库中标准化 Q promise 的使用。是否有任何好的 jscs 扩展(或其他 linters)来帮助在承诺方面加强风格?
我们希望我们的承诺遵循这种形式:
promise()
.then()
.catch()
.done();
并且希望 linter 能够捕获我们代码中缺少 .catch()
的任何 .then()
也欢迎就有关 promises 的其他文体技巧提出建议。
@Jeff 这种方法看起来完全矫枉过正。这两个函数都不能跟在 any 后面。他们每个人都有不同的目的:
- 当您想要处理已解析的值时使用
then(mapSuccess, mapFail)
并且您需要一个结果承诺,该承诺将使用回调返回的值进行解析。
从技术上讲,它是将价值映射到将由其他承诺解决的其他价值。您可能会认为它与数组的 map
类似,您可以将输入数组映射到其他数组,这是某些转换函数的结果。
catch(mapFail)
纯粹是 then(null, mapFail)
的别名,所以当你想 then
时使用它就可以了,而不需要传递 mapSuccess回调。
done(onSuccess, onFail)
使用简单,当您只想处理已解析的值(无需映射到其他承诺)时。 done
还将确保所有最终错误自然暴露(then
和 catch
因为它们是映射器,所以将错误吞入承诺结果中)。
我只能想象一个规则,可以为 linter 添加该规则(并且假设您使用的库不记录吞噬的异常)。这是为了警告 then()
或 catch()
用法,当它们的结果被忽略时(它们应该跟随 done(..)
或传递给其他实体进行处理)。
我希望在我的团队的代码库中标准化 Q promise 的使用。是否有任何好的 jscs 扩展(或其他 linters)来帮助在承诺方面加强风格?
我们希望我们的承诺遵循这种形式:
promise()
.then()
.catch()
.done();
并且希望 linter 能够捕获我们代码中缺少 .catch()
.then()
也欢迎就有关 promises 的其他文体技巧提出建议。
@Jeff 这种方法看起来完全矫枉过正。这两个函数都不能跟在 any 后面。他们每个人都有不同的目的:
- 当您想要处理已解析的值时使用
then(mapSuccess, mapFail)
并且您需要一个结果承诺,该承诺将使用回调返回的值进行解析。
从技术上讲,它是将价值映射到将由其他承诺解决的其他价值。您可能会认为它与数组的map
类似,您可以将输入数组映射到其他数组,这是某些转换函数的结果。 catch(mapFail)
纯粹是then(null, mapFail)
的别名,所以当你想then
时使用它就可以了,而不需要传递 mapSuccess回调。done(onSuccess, onFail)
使用简单,当您只想处理已解析的值(无需映射到其他承诺)时。done
还将确保所有最终错误自然暴露(then
和catch
因为它们是映射器,所以将错误吞入承诺结果中)。
我只能想象一个规则,可以为 linter 添加该规则(并且假设您使用的库不记录吞噬的异常)。这是为了警告 then()
或 catch()
用法,当它们的结果被忽略时(它们应该跟随 done(..)
或传递给其他实体进行处理)。