Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/11/2020, 14:58
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Cambiar valor de una variable con una funcion interna

Las alertas se ejecutan de forma síncrona, por lo cual no muestra el valor de y antes de que termine de ejecutarse la segunda función. Lo que necesitas hacer es utilizar una promesa para acceder de forma asíncrona a los valores actualizados luego de la ejecución de ambas funciones.

Código Javascript:
Ver original
  1. var x = 10,
  2.     y = 20;
  3.  
  4. function f1(y){
  5.     x = x + y;
  6.      
  7.     function f2(){
  8.         y = y + 5;        
  9.         return new Promise(c => c([x, y]));
  10.     }
  11.  
  12.     return f2();
  13. }
  14.  
  15. f1(x).then((z) => {
  16.     alert(z[0]); //20
  17.     alert(z[1]); //15
  18. });

DEMO

En la línea de retorno de la promesa, devuelvo ambos valores dentro de un arreglo puesto que no se puede devolver más de un valor excepto que se encapsulen todos en uno, como en un arreglo. Por ello es que accedo a ambos por medio de los índices 0 y 1 para mostrarlos en las alertas.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 16/11/2020 a las 15:16 Razón: Explicación y enlace