我觉得为持有promise的 JavaScript 变量制定一个命名约定会很有用。我通常不喜欢或提倡编程语言标准之外的命名约定,但在编程风格中,promise 作为函数参数传递,通常很难一眼看出变量是否持有 promise 或“真实的东西”。
我个人使用过promiseOfFoo
and pFoo
,但我觉得前者有点冗长,而后者让我想起了匈牙利语。
有没有常用的约定?
我觉得为持有promise的 JavaScript 变量制定一个命名约定会很有用。我通常不喜欢或提倡编程语言标准之外的命名约定,但在编程风格中,promise 作为函数参数传递,通常很难一眼看出变量是否持有 promise 或“真实的东西”。
我个人使用过promiseOfFoo
and pFoo
,但我觉得前者有点冗长,而后者让我想起了匈牙利语。
有没有常用的约定?
这更多地取决于您将如何使用它们,不是吗?
如果您的代码如下所示:
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 作为回调传递,那么您可以愉快地命名它们promise
或tweetLoading
或dataParsing
或在该特定情况的上下文中有意义的任何内容。
对于 的定义showImage
,我选择的参数是 flat-out called promise
,因此,如果您正在处理该函数,或者您需要调试一系列东西,您可以看到它花费了承诺对象。
我不知道公共约定,但在我自己的代码中使用了以下内容:
var dfrd
:一个 Deferred 对象(我不记得在同一范围内需要两个或更多)var p
: 一个承诺var p_foo
: 几个命名的 Promises 之一var promises
: 包含 Promises 的数组或普通对象例外是一个jqXHR
对象,我将命名它var jqXHR
(同样,我不记得在同一范围内需要两个或更多)。