Estoy manteniendo un caché en JavaScript usando jquery en una variable de caché global.Administrar caché sincrónicamente en js
Cada vez que se recibe información nueva mediante AJAX, se agrega a la memoria caché.
Si no está en la caché, quiero AJAX desde el servidor.
que desea implementar una función para consultar sobre la demanda y para usarlo de esta manera:
$("#label").html(GetName("user123"));
Dónde GetName() debe ser como:
function GetName(username) {
if (Cache[username] != null) return Cache[username];
else
return QueryUsernameFromServer(username)
}
QueryUsernameFromServer() debe ser como:
function QueryUsernameFromServer (username) {
return $.ajax(…);
}
sin embargo, $ .ajax es asíncrono significado que no puede esperar a un valor (y por lo tanto no pueden regresar eso).
Usando $ .ajax en el modo de sincronización de alta no es recomendable (se bloquea el navegador y que no es compatible JSONP), http://api.jquery.com/jQuery.ajax/
uso de este, http://www.techfounder.net/2008/05/17/simple-javascript-cache/, enfoque requiere una devolución de llamada. Sin embargo, no se desea crear una devolución de llamada para cada uso.
¿Hay una buena manera de implementar una función de "caché a petición" en js y ajax sin una devolución de llamada dedicada para cada uso?
+1 para una buena solución. esto es _exactamente_ lo que utilicé para nuestro proveedor de datos en el trabajo. Me gusta tener una capa de datos para poder reutilizarla y actualizar todo el código 'ajax' en una ubicación (por ejemplo, cuando jQuery revisó su espacio de nombres' ajax'). – pixelbobby