jev*_*lio 52 javascript naming-conventions promise deferred
我觉得拥有一个承诺的 JavaScript变量的命名约定会很有用.我一般不喜欢或提倡超出编程语言标准的命名约定,但是在编程风格中,promises作为函数参数传递,通常难以一目了然地知道变量是持有承诺还是"真实的东西".
我个人使用promiseOfFoo
和pFoo
,但我觉得前者有点冗长,而后者给我倒叙从匈牙利.
有一个常用的惯例吗?
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
,所以如果你正在对该函数进行工作,或者你需要调试一连串的东西,你可以看到你看到它的第二个它花了一个承诺对象.