en este ejemplo de MDN , se intenta mostrar qué es una cadena asíncrona si usamos devoluciones de llamada asíncronas de estilo antiguo con una analogía de los pasos a seguir para comer una pizza.
chooseToppings(function(toppings) { placeOrder(toppings, function(order) { collectOrder(order, function(pizza) { eatPizza(pizza); }, failureCallback); }, failureCallback); }, failureCallback);¿Por qué en cada paso, el parámetro de funciones anteriores se pasó como argumento a la función interna? y ¿por qué no proporcionan ningún código dentro de cada función? ¿Es este el siguiente código mejor?
chooseToppings(function(toppings) { //some work with toppings placeOrder(function(order) { //some work with order collectOrder(function(pizza) { eatPizza(pizza); }, failureCallback); }, failureCallback); }, failureCallback);Hay dos ideas principales aquí:
toppings no es un parámetro de chooseToppings , sino su valor de resultado. No es un valor de return , sino que se pasa de forma asíncrona a la devolución de llamada que recibe chooseToppings . Entonces, chooseToppings produce toppings , placeOrder(toppings) produce un order y collectOrder(order) produce una pizza .¿Por qué no proporcionan ningún código dentro de cada función?
Debido a que estas son solo funciones de ejemplo, su implementación no importa. Puede suponer que placeOrder hace todo el // work with toppings , sea lo que sea; la guía solo se ocupa de cómo se llaman estas funciones asincrónicas en secuencia.