JavaScript - Problema al usar Funciones en Javascript

 
Vista:
sin imagen de perfil
Val: 12
Ha disminuido 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

Problema al usar Funciones en Javascript

Publicado por Felipe De Jesus (4 intervenciones) el 04/02/2019 06:36:13
Hola, tengo el siguiente problema, necesito saber si una funcion devuelve true o false pero esta funcion requiere de otra funcion dentro de la misma entonces dependiendo del resultado debo hacer que la funcion padre retorne el valor de la funcion hija, como hago esto?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if( consultarStatus==true ){
    // Entonces procedo con mi codigo
}
 
function consultarStatus(ip){
	$.ajax({
        url: 'php_action/cobertura.php?job=iprangesearch',
        type: 'post',
        data: {ip : ip},
        dataType: 'json',
        success:function(response) {
            if(response.exist == true){
                return true;  <---- Este valor necesito que sea retornado por la funcion principal
            }else{
                return false;
            }
        }
    });
    //  return true;  <--- ejemplo de lo que quisiera lograr pero el valor generado en el ajax no aparece
}

Porfavor alguien que me ayude a solucionarlo c:
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 3.506
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Problema al usar Funciones en Javascript

Publicado por joel (895 intervenciones) el 04/02/2019 09:02:27
Tienes que tener en cuenta, que cuando haces una petición AJAX, la función consultarStatus() finaliza, pero la petición AJAX continua, ya que es asíncrona... y cando devuelve el resultado AJAX, luego devuelve el resultado, que puede ser casi al instante, o puede tardar algunos segundos.

Una manera de soluconar este problema, es indicar que no sea asicrona la petición ajax añadiendo async: false
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$.ajax({
    url: 'php_action/cobertura.php?job=iprangesearch',
    type: 'post',
    data: {ip : ip},
    dataType: 'json',
    async: false,
    success:function(response) {
        if(response.exist == true){
            return true;  <---- Este valor necesito que sea retornado por la funcion principal
        }else{
            return false;
        }
    }
});

Aunque yo no soy partidario de ejecutarlo de modo síncrono, y que detienes todo el código javascript hasta que devuelve el resultado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar