My Assistant es-419 Explainer

Explicador de Mi asistente

Objetivo de este acertijo: Usar una función de devolución de llamada para cambiar qué tarea hace myAssistant.

Tutorial de la solución: myAssistant es una función que toma 2 entradas: un string que se almacenará en el parámetro time , y otra función que se almacenará en el parámetro callbackFunction.

Cuando usas una función como la entrada de otra función, se llama “función de devolución de llamada” o simplemente “devolución de llamada”. Esto es distinto de las funciones de anidamiento que hiciste con print(pickRandom(10)) o drawBox(pickrandom(color)) porque print() y drawBox() en realidad solo usan la salida final de la llamada pickRandom(). El asistente toma el nombre de la función para que pueda ejecutar esa función dentro de sí mismo.

El código de inicio tiene el comando myAssistant('6pm', recordShow). recordShow es el nombre de una función que se creó en algún código oculto adicional. '6pm' se almacenará en el parámetro time y recordShow se almacenará en el parámetro callbackFunction.

Cuando se ejecuta myAssistant(), registra un mensaje que te permite saber que comenzó. Luego, usa sus parámetros, time y callbackFunction, para ejecutar el comando callbackFunction(time). Dado que sabemos qué hay almacenado en cada uno de esos parámetros, el comando es el mismo que recordShow('6pm'). Esto llamará a la función recordShow() con el argumento '6pm'.

En la parte inferior de tu código, puedes hacer que el “configure una alarma” o “encienda las luces” usando setAlarm o turnOnLights como la función de devolución de llamada. Solo recuerda que el primer argumento de myAssistant() debe ser la hora (un string) y el segundo argumento es el nombre de una función (ya sea setAlarm o turnOnLights)

Solución del código de ejemplo:

(Pulsa a continuación para revelar)


function myAssistant (time, callbackFunction) {

console.log('I am your personal assistant, and I am happy to help with your request');

callbackFunction(time);

}

myAssistant('6pm', recordShow);

myAssistant('10am', setAlarm);

Conceptos de JavaScript: funciones de devolución de llamada, funciones de llamada, bloque de código (función), console.log()

Código adicional (código oculto que se ejecuta antes del código del acertijo):


function setAlarm(time) {

console.log('Your alarm has been set for ' + time);

}

function turnOnLights(time) {

console.log('Your lights will be turned on at ' + time);

}

function recordShow(time) {

console.log('Your show will be recorded at ' + time);

}

1 Like