承诺的JavaScript命名约定?

jev*_*lio 52 javascript naming-conventions promise deferred

我觉得拥有一个承诺的 JavaScript变量的命名约定会很有用.我一般不喜欢或提倡超出编程语言标准的命名约定,但是在编程风格中,promises作为函数参数传递,通常难以一目了然地知道变量是持有承诺还是"真实的东西".

我个人使用promiseOfFoopFoo,但我觉得前者有点冗长,而后者给我倒叙从匈牙利.

有一个常用的惯例吗?

Nor*_*ard 18

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

如果你的代码如下:

var imageLoading = loadImage(url); // returns promise
imageLoading.done(showImage);

// imageLoading.done
// imageLoading.error
// imageLoading.then
// imageLoading.success
// imageLoading.fail
// ... whatever your library supports
Run Code Online (Sandbox Code Playgroud)

然后,我可能会建议将这个承诺命名为现在时的动词......

但是,如果您正在构建一个依赖于延迟对象的库

// accepts a promise
var showImage = function (promise) {
    promise.done(function (img) { /* ...... */ });
};
Run Code Online (Sandbox Code Playgroud)

然后将变量命名为名词并没有什么特别的错误,只要能够理解哪些方法采用承诺而哪些方法不承诺.

var image = loadImage(url); // returns promise
showImage(image);           // acts on promise
Run Code Online (Sandbox Code Playgroud)

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

如果你将promises作为回调传递给对象方法,那么你可以愉快地命名它们promise或者tweetLoading或者dataParsing在特定情况的上下文中命名.

对于定义showImage,我选择的参数是flat-out调用promise,所以如果你正在对该函数进行工作,或者你需要调试一连串的东西,你可以看到你看到它的第二个它花了一个承诺对象.

  • +1.我喜欢现在的分词思想("动词"),但只有当**动作**对诺言的含义有影响时才会适用(如`dataParsing`).承诺通常是关于最终结果(数据),因此在那些情况下并非如此.我也喜欢将函数参数命名为"promise"并从上下文中推断出含义的想法.好主意,但没有惯例. (2认同)