JavaScript的命名约定的承诺?

我觉得有一个有约定的JavaScriptvariables的命名约定是有用的。 除了编程语言标准之外,我通常不喜欢或者提倡命名约定,但是在承诺被作为函数parameter passing的编程风格中,通常很难一目了然地告诉variables是否有承诺或者“真实的东西”。

我个人使用过promiseOfFoopFoo ,但是我发现前者有点冗长,而后者则让我从匈牙利回忆。

有一个常用的约定吗?

这更多取决于你将如何使用它们,不是吗?

如果你的代码如下所示:

 var imageLoading = loadImage(url); // returns promise imageLoading.done(showImage); // imageLoading.done // imageLoading.error // imageLoading.then // imageLoading.success // imageLoading.fail // ... whatever your library supports 

那么,我可能会build议把这个承诺命名为一个现在时态的动词。

但如果你正在build立一个依赖于延迟对象的库

 // accepts a promise var showImage = function (promise) { promise.done(function (img) { /* ...... */ }); }; 

那么把variables命名为名词就没有什么特别的错,只要理解哪些方法承诺,哪些不承诺。

 var image = loadImage(url); // returns promise showImage(image); // acts on promise 

现在你的界面非常干净,你可以编写代码,看起来100%程序。 … buuuut,你需要知道哪些函数/方法使用承诺,哪些使用对象。

如果您将promise作为callback传递给对象方法,那么您可以愉快地将它们命名为promisetweetLoadingdataParsing或者在特定情况的上下文中有意义的名称。

对于showImage的定义,我select的参数是flat-out,叫做promise ,所以如果你正在做这个function的工作,或者你需要debugging一连串的东西,你可以看到第二个你看到它承诺对象。

我不知道公共惯例,但在我自己的代码中使用了以下内容:

  • var dfrd :Deferred对象(我不记得在同一个范围内需要两个或更多)
  • var p :一个承诺
  • var p_foo :几个命名的var p_foo一个
  • var promises :包含Promise的数组或纯对象

例外是一个jqXHR对象,我将其命名为var jqXHR (同样,我不记得在同一范围内需要两个或更多)。