¿Por qué es necesario el "paso de uso"? Alguien señaló que los pasos en un flujo de trabajo son como "puntos de control de generación" en un videojuego. Buena analogía. Una consecuencia interesante de marcar una función como "usar flujo de trabajo" es que no se le permite realizar E/S que no sean pasos. Los flujos de trabajo deben estar libres de efectos secundarios y ser deterministas. Cada vez que esperas esa función debe ser un paso. Estas llamadas a funciones se pueden considerar como continuaciones serializables. Las entradas y salidas de estas funciones se confirman en un registro. Piensa en JSON. Si tiene un flujo de trabajo con 3 pasos y el último falla, tenemos que ser capaces de "volver a ejecutar" toda la función y tener un manejo perfecto del estado del mundo. De esta manera, "use step" es en realidad muy similar a "use cache" o "getStaticProps", funciones que se pueden externalizar y aislar en el espacio y el tiempo, ejecutándose en diferentes "computadoras".