Suponha que temos as seguintes rotas em um aplicativo front-end:
/addresses
/checkout
Quando um usuário visita / endereços, obtemos seus endereços. Quando eles visitam / finalizam a compra, nós baixamos seus endereços, seu carrinho e seus métodos de pagamento. Os endereços são necessários e obtidos em ambas as páginas.
Este é um bom padrão para garantir que os endereços sejam buscados apenas uma vez:
class User extends Backbone.Model
addresses: ->
unless @dfdAddresses
addresses = new AddressesCollection
@dfdAddresses = addresses.fetch()
@dfdAddresses
Então, nos controladores:
# For /addresses
user.addresses().then (addresses) =>
@render()
# For /checkout
$.when(
cart.fetch(),
user.addresses(),
user.paymentMethods()
).then =>
@render()
Como o adiado é memorizado, os endereços são buscados apenas uma vez. Isso salva uma solicitação quando, por exemplo, a página de checkout pode direcionar o usuário para / address para alterar seu endereço de entrega.