branch ifadesi, bir veya daha fazla asenk. alt ifadeden oluşan bir blok başlatır. Ondan sonra gelen tüm ifadeler, branch ifadelerinin tamamlanmasını beklemeden hemen yürütülür.
branch ifadesini kullanarak herhangi bir asenk. kod blokuna hemen etkinleştir ve unut özelliğine sahipmiş gibi davranabilirsin ancak kod bloku yine de bir asenk. bağlam içinde çağrılmak zorundadır.
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 canceledAşağıdaki kod, branch ifadesinin sözdizimini gösterir.
expression0
branch:
slow-expression
mid-expression
fast-expression
expression1Aşağıdaki diyagramda ifadelerin yürütme akışı gösterilmektedir.
Yapılandırılmamış eşzamanlılık, spawn ifadesine benzerdir ancak branch, herhangi bir rastgele kod blokuna izin verir, yalnızca çevresindeki asenk. bağlam ile sınırlıdır ve bu sınırlar dahilinde kullanılabilir. Bu nedenle mümkün olan her durumda spawn yerine branch tercih edilir.
Branch İfadesi Kullanımı
Bir | |
| Anında |
|
|
|
|
|
|
|
|
|
|
Bir branch ifadesi, şu anda loop veya for gibi bir yineleme ifadesinin gövdesinde kullanılamayabilir. Kullanılması zorunluysa, bir asenk. fonksiyonun içine paketle ve yineleme ifadesinin bu fonksiyonu çağırmasını sağla.