Un'espressione branch avvia un blocco di una o più sottoespressioni asincrone e ogni espressione successiva viene eseguita immediatamente senza attendere il completamento delle espressioni branch.
Puoi utilizzare branch essenzialmente per trattare qualsiasi blocco di codice asincrono come se fosse fire-and-forget immediato, ma deve essere comunque chiamato all'interno di un contesto asincrono.
branch:
# This block continues until completed
AsyncFunction1() # Starts effectively the same time as AsyncFunction3()
Method1() # Block can be mixed with immediate expressions
AsyncFunction2()
AsyncFunction3() # Starts effectively the same time as AsyncFunction1()
# If branch block task is still running when AsyncFunction3 completes
# then any remaining branch task is canceledIl codice seguente mostra la sintassi dell'espressione branch.
expression0
branch:
slow-expression
mid-expression
fast-expression
expression1Il diagramma seguente mostra il flusso di esecuzione delle espressioni.
È simile all'espressione spawn della concorrenza non strutturata, ma branch consente qualsiasi blocco di codice arbitrario ed è consentita solo all'interno di un contesto asincrono che la delimita. Per questo motivo dovresti prediligere branch invece di spawn quando possibile.
Utilizzo dell'espressione Branch
Dove è possibile utilizzare un'espressione | |
Tempo di invocazione dell'espressione | Immediato |
Requisiti per il blocco di codice | L'espressione |
Che cosa fa l'espressione | Il corpo dell'espressione |
Al termine dell'espressione | L'espressione |
Quando inizia l'espressione successiva a | Qualsiasi espressione successiva all'espressione |
Risultato dell'espressione | Un'espressione |
Attualmente non è possibile utilizzare un'espressione branch nel corpo di un'espressione di iterazione come loop o for. Se devi utilizzarla, includila in una funzione asincrona e fai in modo che l'espressione di iterazione chiami questa funzione.