JS funcion que retorne un valor

Estoy haciendo una función en JS que recibe ciertos parámetros y retorna un valor pero la variable a pesar de cambiar en cuando se cumple alguna de las condiciones no se cambia a la hora de retornarla, siempre arroja en la consola que es undefined.

Aquí el código.

function evaluarDisponibilidad(id_ps, day, time_init, time_end) {   var result;  var data = $  .getJSON('/admin/section_professor_consult/'+id_ps+'',function(data){     if (data.length > 0)   {     $  .each(data, function(idx, elem){       daySection = elem.day;        time_initSection = parseFloat(elem.time_init).toFixed(2);       time_endSection = parseFloat(elem.time_end).toFixed(2);        time_init = parseFloat(time_init).toFixed(2);       time_end = parseFloat(time_init).toFixed(2);       if (day == daySection){         console.log("Entre en el dia "+day);          if ((time_init > time_initSection) && (time_init < time_endSection)){           console.log("Entre en time init"+time_init);           result = 1;          } else if((time_end > time_endSection) && (time_end < time_endSection)){           console.log("este en el time end"+time_end);           result = 1;          } else if (time_init == time_initSection){           console.log("mismo time init "+time_init);           result = 1;          } else if (time_end == time_endSection){           console.log("mismo time end"+time_end);           result = 1;         }       }     });   }   });  console.log(result);  //return result;  } 

Haciendo una impresión de consola con valores que cumplan condiciones ingresa en el ciclo y en cualquiera de los condicionales, pero una vez que sale de esto el valor de result vuelve a ser undefined.

Como impedir que uma aplicação React Native retorne ao clicar no BackButton usando React Navigation

Olá, estou criando uma aplicação em React Native, e para as navegações eu tenho trabalhado com o plugin React Navigation. A estrutura do meu projeto está assim:

import React from 'react'; import { View, Text, Button } from 'react-native'; import { FluidNavigator } from 'react-navigation-fluid-transitions';  // tela de splash export default SplashScreen extends React.Component {   componentDidMount = () =>      setTimeout(() => this.props.navigation.navigate('Login'), 500);    render = () =>      <View>     <Text>SplashScreen</Text>   </View>; }  // tela de login de usuario export default LoginScreen extends React.Component {   goToDashboard = () => this.props.navigation.navigate('Dashboard');   goToRegister = () => this.props.navigation.navigate('Register');   render = () =>     <View>       <Text>LoginScreen</Text>       <Button onPress={goToDashboard} title="Sign in" />       <Button onPress={goToRegister} title="Sign up" />     </View>   } }  // tela de registro de usuario export default RegisterScreen extends React.Component {   render = () => <View><Text>RegisterScreen</Text></View>; }  // tela de dashboard (após o usuário estar logado) export default DashboardScreen extends React.Component {   render = () => <View><Text>DashboardScreen</Text></View>; }  // navigator contendo as telas const Navigator = FluidNavigator({   Splash: { screen: SplashScreen },   Login: { screen: LoginScreen },   Register: { screen: RegisterScreen },   Dashboard: { screen: DashboardScreen } })  export default App extends React.Component {   render(){     return <View><Navigator/></View>   }       } 

Meu problema está nas navegações. Quando o usuário clica no botão voltar, ele vai para a tela anterior e isso me complica… eu preciso que a navegação seja na seguinte relação:

  • SplashScreen => LoginScreen
  • LoginScreen <=> RegisterScreen
  • LoginScreen => DashboardScreen
  • RegisterScreen => DashboardScreen

Eu até tentei resetar o index usando o NavigationActions mas isso atrapalha as animações que estão na tela (por causa do react-navigation-fluid-transitions).

Também tentei bloquear o evento do BackButton assim como em alguns tutoriais, só que se eu bloqueio ele na tela de Screen, ele passa a dar pau em todas as telas, impedindo que eu consiga voltar para a tela de Login na tela de Register e consequentemente para as outras telas que virão na aplicação.

O que eu preciso fazer para que eu impeça (dentro da tela que eu quero impedir) para que ela não possa voltar até ‘X’ tela?