Pido disculpas si este es un duplicado.Mata a un proceso de Javascript después de un período de tiempo establecido
Digamos que tengo una función de JavaScript que llama a un servicio web para extraer algunos datos. Uso algún tipo de gráfico en movimiento para que el usuario sepa que está funcionando. Cuando se recupera con éxito, cambio el gráfico a una marca de verificación. Aquí está mi código:
getData: function() {
$("#button").attr("disabled", "true");
var params = {
doRefresh: false,
method: '/GetData',
onSuccess: new this.getDataCallback(this).callback,
onFailure: new this.getDataFailed(this).callback,
args: { text: $("#getData").val() }
};
WebService.invoke(params.method, params.onSuccess, params.onFailure, params.args);
}
Lo que me gustaría es después de 5 minutos, si este proceso todavía no ha regresado con éxito mis datos, para lanzar una excepción o, mejor aún, ejecutar mi función this.getDataFailed (este) .llamar de vuelta. ¿Esto parece factible con JavaScript? He observado setTimeout() y setInterval(), y parece que solo retrasan la ejecución de un script, mientras que quiero literalmente "agotar el tiempo" de un proceso de larga ejecución. ¿Algunas ideas?
Además, estoy abierto a cualquier crítica/mejora de mi código que permita esta funcionalidad.
soy usando jQuery. Así que, básicamente, tendría que ajustar mi llamada a WebService.invoke con $ .ajax (timeout: 50000, WebService.invoke (...);) ¿Similar a eso? – karlgrz
@KG: puede usar '$ .ajaxSetup()' para establecer la propiedad de tiempo de espera que se aplicará globalmente a todas las llamadas realizadas con '$ .ajax()'. Ver mi respuesta actualizada. –
Voy a intentar esto, gracias! – karlgrz