2013-06-29 3 views
2

Я задавался вопросом, будет ли это нормально назвать имя переменной на обещание так же, как аргумент передается обратного вызова:Имя Promise переменной равно аргумент обратного вызова

var dbItems = db.find(); 
dbItems.then(function(dbItems) { 
    // Do some stuff with dbItems here... 
}); 

Я думаю, что было бы синтаксически правильно, но есть ли какие-либо аргументы (например, возможная путаница или читаемость) против использования этого с точки зрения стиля кода?

+0

Просто проверка: являются ли обе переменные 'dbItems' ссылкой на один и тот же объект? Если да, то вам не нужен параметр. Вы можете просто использовать 'dbItems' из внешней области. Если нет, то вы затеняете (т. Е. Делаете недоступным) объект 'dbItems' из внешней области. Я не уверен, почему вы хотели бы это сделать. Следует избегать затенения переменных. –

+0

Выглядит как полностью законный javascript, но может смутить кого-то, скорее всего, самого себя, когда вы придете посмотреть код через 6 месяцев. –

+0

@ Beetroot-Beetroot это то, что я тоже думал;) Любые рекомендации о том, как назвать их иначе? Например, 'dbItemsPromise' и' actualDbItems'? – raffomania

ответ

0
var dbItems = db.find(); 
dbItems.then(function(dbItems) { 
    // Do some stuff with dbItems here... 
}); 

это то же самое, как написание:

var dbItems = db.find(); 
dbItems.then(function(xxxxx) { 
    var dbItems = xxxxx; 
    // Do some stuff with dbItems here... 
}); 

, что означает, что внутри анонимной функции, dbItems это совершенно разные вещи, и вы не имеете доступа к «внешней» dbItems переменной.

Обычно я не рекомендую покупки на этом сайте, но я чувствую, что вы могли бы очень хорошо использовать эту книгу. http://www.amazon.com/dp/0596517742

+0

Спасибо, я знал это;) Мой вопрос был больше о том, если это хорошая практика. При работе с обещаниями почти в каждом случае вам не нужно получать доступ к фактической переменной Promise из обратного вызова (поскольку она уже разрешена при вызове callback). Поскольку Promise и аргумент для обратного вызова в основном представляют одно и то же, я всегда чувствовал желание назвать эти две переменные одинаковыми. – raffomania

Смежные вопросы