JavaScript对承诺的命名约定?[已关闭]

问题描述 投票:54回答:2

我觉得应该为JavaScript变量制定一个命名约定,让它们持有 承诺. 我一般不喜欢也不提倡超出编程语言标准的命名惯例,但在承诺作为函数参数传来传去的编程风格中,往往很难一目了然地分辨出一个变量所承载的是承诺还是 "真东西"。

我个人曾用过 promiseOfFoopFoo但我觉得前者有点啰嗦,后者让我想起了匈牙利语。

有没有一个常用的约定?

javascript naming-conventions deferred promise
2个回答
18
投票

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

如果你的代码看起来像。

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,你需要知道哪些函数方法使用承诺,哪些使用对象。

如果你把承诺作为回调传递到对象方法里面,那么你可以很高兴地把它们命名为 promisetweetLoadingdataParsing 或任何在该特定情况下有意义的东西。

关于 showImage,我选择的参数是平铺直叙,叫做 promise,这样如果你在做那个函数的工作,或者你需要调试一连串的东西,你可以一看就知道它取了一个承诺对象。


0
投票

我不知道有什么公开的约定,但是在我自己的代码中使用了以下的方式。

  • var dfrd延迟对象(我不记得曾经在同一个作用域中需要两个或更多的对象)。
  • var p:承诺
  • var p_foo承诺:数个命名的承诺之一
  • var promises承诺:一个包含承诺的数组或普通对象

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

© www.soinside.com 2019 - 2024. All rights reserved.