Curso de Raku / Programación funcional, concurrente, reactiva y web / Programación reactiva / await / Exercises / Espere una promesa
Solución: Espere una promesa
Aquí tienes una posible solución para la tarea.
Código
my @jobs =
(start { sleep 0.3; 'slow' }),
(start { sleep 0.1; 'quick' }),
(start { sleep 0.2; 'medium' });
say await @jobs;🦋 Puedes encontrar el código fuente en el archivo await-a-promise.raku.
Salida
(slow quick medium)Comentarios
Los tres trabajos arrancan a la vez y duermen de forma concurrente, así que el programa entero tarda unos
0.3segundos: la duración del trabajo más lento, no la suma de los tres.Aunque
quicktermina primero yslowel último, la salida es(slow quick medium):awaitdevuelve cada resultado en la misma posición que su promesa en@jobs. El orden de finalización afecta solo a cuándo retornaawait, nunca a la disposición de los resultados.