62

我觉得为持有promise的 JavaScript 变量制定一个命名约定会很有用。我通常不喜欢或提倡编程语言标准之外的命名约定,但在编程风格中,promise 作为函数参数传递,通常很难一眼看出变量是否持有 promise 或“真实的东西”。

我个人使用过promiseOfFooand pFoo,但我觉得前者有点冗长,而后者让我想起了匈牙利语。

有没有常用的约定?

4

2 回答 2

21

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

如果您的代码如下所示:

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

如果您在对象方法内部将 Promise 作为回调传递,那么您可以愉快地命名它们promisetweetLoadingdataParsing或在该特定情况的上下文中有意义的任何内容。

对于 的定义showImage,我选择的参数是 flat-out called promise,因此,如果您正在处理该函数,或者您需要调试一系列东西,您可以看到它花费了承诺对象。

于 2013-01-10T21:53:22.800 回答
0

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

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

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

于 2013-01-10T21:37:00.307 回答