2012-01-19 8 views
5

Este código se detiene evento MouseMove

$.ajaxSetup({async:false}); 
$.get(url).success(function(data) { result = data; }); 

¿Hay una manera de evitar esto, pero mantener $ .ajaxSetup ({async: false}) ;, como una función de la carga?

Gracias

Añadidos:

lo que si necesito

$.ajaxSetup({async:false}); 
$.get(url).success(function(data) { result = data; }); 
$.ajaxSetup({async:true}); 
return result 

cómo manejar eso?

Gracias

+2

No desea '$ .ajaxSetup ({async: false})'. – Tomalak

+0

'async: false' detiene el navegador, todo el JavaScript, hasta que finaliza. –

+0

@Tomalak: Necesito async: falso, pero no quiero que se detenga ... –

Respuesta

6

return implica flujo de código síncrono. AJAX es asincrónico sin async: false, sin embargo. Esto no significa que deba usar async: false. Por el contrario, debe cambiar el flujo de código para utilizar devoluciones de llamada en lugar de valores devueltos.

Esto es necesario ya que no hay forma de hacer que el código asíncrono sea síncrono (es decir, no puede usar return con funciones asíncronas). La única forma es proporcionar una devolución de llamada sí mismo, así:

function get(url, callback) { 
    $.get(url).success(function(data) { callback(data); }); 
} 

igual:

get("...", function(result) { 
    // use `result` which you normally got by assigning the return value 
    // of `get` to a variable 
}); 
5

Usted debe encontrar una manera de hacer lo que quiera sin establecer async:false.

Usando las devoluciones de llamada de su solicitud de AJAX debería ser capaz de hacer la mayoría de las cosas.

+0

han agregado además de mi pregunta, por favor verifique –

3

async:false detiene el navegador, y todas JavaScript, hasta que se haga la llamada AJAX. No hay forma de evitar esto.

Lo que debe hacer es, en lugar de tratar de devolver un valor de una llamada AJAX, debe hacer todo el procesamiento de los datos dentro de su devolución de llamada.

Puede guardar los datos devueltos en una variable global, pero no estará disponible hasta que finalice.

Cuestiones relacionadas