我认为为JavaScript变量设置一个包含承诺的命名约定会很有用。我一般不喜欢或提倡超出编程语言标准的命名约定,但是在编程风格中,promises作为函数参数传递,通常难以一目了然地知道变量是持有承诺还是“真实的东西”。
我个人使用promiseOfFoo
和pFoo
,但我发现前者有点冗长,而后者则给我匈牙利语的闪回。
是否有常用惯例?
答案 0 :(得分:17)
这更多地取决于你将如何使用它们,不是吗?
如果你的代码如下:
var imageLoading = loadImage(url); // returns promise
imageLoading.done(showImage);
// imageLoading.done
// imageLoading.error
// imageLoading.then
// imageLoading.success
// imageLoading.fail
// ... whatever your library supports
然后,我可能会建议将这个承诺命名为现在时的动词......
但是如果你正在构建一个依赖于延迟对象的库
// accepts a promise
var showImage = function (promise) {
promise.done(function (img) { /* ...... */ });
};
然后将变量命名为名词并没有什么特别的错误,只要能够了解哪些方法采用承诺而哪些方法不承诺。
var image = loadImage(url); // returns promise
showImage(image); // acts on promise
现在您的界面非常干净,您可以编写看起来100%程序化的代码。 ... buuuut,你需要知道哪些函数/方法使用promises,哪些使用对象。
如果您将promises作为回调传递给对象方法,那么您可以愉快地将它们命名为promise
或tweetLoading
或dataParsing
或在该特定情境的上下文中有意义的任何内容。
对于showImage
的定义,我选择的参数是平坦的,称为promise
,因此,如果您正在处理该函数,或者您需要调试一系列内容,你可以看到你看到的第二个它是一个承诺对象。
答案 1 :(得分:0)
我不知道公开会议,但在我自己的代码中使用了以下内容:
var dfrd
:延迟对象(我不记得在同一范围内需要两个或更多)var p
:承诺var p_foo
:其中一个名为Promises的var promises
:包含Promises的数组或普通对象例外是jqXHR
对象,我将其命名为var jqXHR
(同样,我不记得在同一范围内需要两个或更多)。