Pregunta

Hoy estoy trabajando en un proyecto mascota con llamadas a funciones encadenadas, y estoy curioso cómo podría detectar cuando se ejecuta la última función en la cadena. Por ejemplo:

func1('initial data').func2().func3().func4();

Y después func2-4 han terminado de trabajar en 'inicial de datos' me gustaría para detectar cuando se hace func4. Desde func4 () no siempre es la última función en la cadena, también conocido como podría terminar en .func3 () o .func5 () por ejemplo, o que podría mezclar mi función llama dependiendo de lo que estoy tratando de hacer, estoy tratando de pensar en una manera de detectar no más se están haciendo llamadas a la función pero no voy a llegar muy lejos.

¿Fue útil?

Solución

No se puede.

Además, si no están encadenados:

var v = func1('initial data');
v = v.func2();
v = v.func3();
v = v.func4();

¿Qué consideras que es la última función? Cada función es la última función en su propia cadena, pero si finaliza algo después de cada paso, que no va a funcionar.

Simplemente haga una función que se llama a la última para finalizar el proceso.

Otros consejos

El enfoque tradicional es poner lo que quiere que se haga después de la última función en la línea siguiente:

func1('initial data').func2().func3().func4();
allFunctionsDone();

;)

Puede escribir el secuenciador, que le ayudará a hacer esto para usted. En lugar de ejecutar llamadas directas, cambiar los nombres de las funciones y llamarlos uno por uno. Algo como esto

executeSequence(func1('init_dat'),[
    'func2',
    'func3',
    'func4'
]);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top