jquery - template - ¿Es posible detener las solicitudes de "lectura" de Backbone?
underscore js que es (3)
Ok así que aquí está lo que hice
Estoy guardando las solicitudes de recuperación en una variable
app.fetchXhr = this.model.fetch();
En mi enrutador, tengo una función que se encarga de cerrar las vistas y renderizarlas. También se encarga de desencadenar los disparadores necesarios para cada cambio de vista, pero eso no es relevante en esta pregunta.
Antes de hacer nada, esta función de enrutador ejecuta lo siguiente
//Stop pending fetch
if(app.fetchXhr.readyState > 0 && app.fetchXhr.readyState < 4){
app.fetchXhr.abort();
}
espero que esto ayude
Tengo una aplicación de red troncal que tiene varias vistas. El cambio entre vistas desencadena solicitudes de Ajax para obtener diferentes colecciones. Me gustaría detener la solicitud actual de "lectura" ajax si se inicia una nueva. ¿Es posible?
Otra respuesta tardía en caso de que alguien más se tope con esto.
Terminé sobrescribiendo Backbone.sync para agregar un grupo de objetos XHR y una opción para abortar las solicitudes pendientes en la recuperación.
var sync = Backbone.sync
, xhrPool = [];
Backbone.sync = function(method, model, options) {
options = options || {};
if (method === ''read'') {
if (options.abortPending == true) {
for (var i = 0; i < xhrPool.length; i++) {
if (xhrPool[i][''readyState''] > 0 && xhrPool[i][''readyState''] < 4) {
xhrPool[i].abort();
xhrPool.splice(i, 1);
}
}
}
// cleanup xhrPool
// todo: make removal from the pool an ''always'' jqXHR callback
// instead of cleanup on every read?
for (var i = 0; i < xhrPool.length; i++) {
if (xhrPool[i][''readyState''] === 4) {
xhrPool.splice(i, 1);
}
}
var xhr = sync(method, model, options);
xhrPool.push(xhr);
return xhr;
} else {
return sync(method, model, options);
}
};
Supongo que estás utilizando la columna vertebral con jQuery. Si es así, la siguiente pregunta parece proporcionarle una respuesta:
Abortar peticiones Ajax usando jQuery
La fetch
la xhr
troncal devuelve el xhr
que están hablando, IIRC.