我希望在我的团队代码库中标准化Q promises的使用。是否有任何好的jscs扩展(或其他短语)来帮助实现承诺的风格?
我们希望我们的承诺遵循这种形式:
promise()
.then()
.catch()
.done();
并希望在我们的代码中找到缺少.then()
.catch()
的帖子
对于承诺的其他风格提示的建议也是受欢迎的。
答案 0 :(得分:2)
@Jeff这种方法看起来总是矫枉过正。这些功能都不能跟随任何一个。他们每个人都有不同的目的:
then(mapSuccess, mapFail)
,并且您需要一个将通过回调返回的值解析的结果承诺。map
类似,您可以将输入数组映射到其他转换函数的结果。catch(mapFail)
纯粹是then(null, mapFail)
的别名,所以只需在then
时使用它,但您无需传递 mapSuccess 回调。done(onSuccess, onFail)
简单地使用,当你想要做的就是处理已解决的值(不需要映射到其他promise)。 done
还会确保所有可能的错误都会自然暴露出来(then
和catch
,因为他们是映射器,将错误吞没到承诺结果中。我可以想象只有一个规则可以添加到linter中(假设你使用的库没有记录吞下的异常)。当他们的结果被忽略时,他们会警告then()
或catch()
这些用法(它们应该跟done(..)
或者传递给其他实体进行处理)。