Подтвердить что ты не робот

Соглашение об именах JavaScript для promises?

Я считаю, что было бы полезно иметь соглашение об именах для переменных JavaScript, которые содержат обещание. Обычно мне не нравится или не защищает соглашения об именах, кроме стандартов языка программирования, но в стиле программирования, где promises передаются как аргументы функции, часто трудно сразу понять, имеет ли переменная обещание или "реальная вещь" ".

Я лично использовал promiseOfFoo и pFoo, но я считаю, что первый немного подробный, и последний дает мне воспоминания от венгерского.

Существует ли общепринятое соглашение?

4b9b3361

Ответ 1

Это больше зависит от того, как вы собираетесь их использовать, не так ли?

Если ваш код выглядит так:

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) { /* ...... */ });
};

Тогда нет ничего особенно плохого в том, чтобы именовать переменную как существительное, если есть понимание того, какие методы принимают promises, а какие нет.

var image = loadImage(url); // returns promise
showImage(image);           // acts on promise

Теперь ваши интерфейсы действительно чистые, и вы можете написать код, который выглядит на 100% процедурным. ... buuuut, вам нужно знать, какие функции/методы используют promises и которые используют объекты.

Если вы передаете promises в качестве обратных вызовов внутри методов объектов, вы можете с радостью назвать их promise или tweetLoading или dataParsing или что-то имеющее смысл в контексте этой конкретной ситуации.

Для определения showImage параметр I, выбранный мной, является плоским, называется promise, поэтому, если вы выполняете работу над этой функцией или вам нужно отлаживать цепочку вещей, вы можете увидеть во-вторых, вы посмотрели на него, что он получил объект обещания.

Ответ 2

Я не знаю публичного соглашения, но использовал свой код:

  • var dfrd: отложенный объект (я не помню, чтобы когда-либо понадобилось два или более в одной области)
  • var p: обещание
  • var p_foo: один из нескольких названных Promises
  • var promises: массив или простой объект, содержащий Promises

Исключением является объект jqXHR, который я назову var jqXHR (опять же, я не помню, чтобы когда-либо понадобилось два или более в той же области).