Corso di Raku / Programmazione funzionale, concorrente, reattiva e web / Programmazione reattiva / await / Exercises / Attendete una promise
Soluzione: Attendete una promise
Ecco una possibile soluzione del compito.
Codice
my @jobs =
(start { sleep 0.3; 'slow' }),
(start { sleep 0.1; 'quick' }),
(start { sleep 0.2; 'medium' });
say await @jobs;🦋 Trova il programma nel file await-a-promise.raku.
Output
(slow quick medium)Commenti
Tutti e tre i lavori partono insieme e dormono in modo concorrente, quindi l’intero programma impiega circa
0.3secondi — la durata del lavoro più lento, non la somma di tutti e tre.Anche se
quickfinisce per primo eslowper ultimo, l’output è(slow quick medium):awaitrestituisce ogni risultato nella stessa posizione della propria promise in@jobs. L’ordine di completamento influenza solo quandoawaitritorna, mai la disposizione dei risultati.