ProtoFlux:ASync For: Difference between revisions

From Resonite Wiki
add async for node
 
AsyncCall not SyncResumption
 
(7 intermediate revisions by 3 users not shown)
Line 4: Line 4:
|Inputs=
|Inputs=
[
[
{"Name": "*", "Type": "AsyncImpulse"},
{"Name": "*", "Type": "AsyncCall"},
{"Name": "Count", "Type": "int"}
{"Name": "Count", "Type": "int"},
{"Name": "Reverse", "Type": "bool"}
]
]
|Outputs=
|Outputs=
[
[
{"Name": "LoopStart", "Type":"AsyncImpulse"},
{"Name": "LoopStart", "Type":"AsyncCall"},
{"Name": "LoopIteration", "Type":"AsyncImpulse"},
{"Name": "LoopIteration", "Type":"AsyncCall"},
{"Name": "LoopEnd", "Type":"Continuation"},
{"Name": "LoopEnd", "Type":"Continuation"},
{"Name": "Iteration", "Type":"int"}
{"Name": "Iteration", "Type":"int"}
]
]
|}}
|}}
ASync For is a protoflux node that will do a bunch of async tasks in order in an Async context, waiting for each task to be done before moving to the next one. This is useful if you want to do a bunch of [[ProtoFlux:GET String|GET String]] requests but you need to wait for the previous one to be done before doing the next, for a specified number of times. This does not behave the same as using a [[ProtoFlux:Start ASync Task|Start ASync Task]] on every [[ProtoFlux:For|For loop]] iteration or even before the [[ProtoFlux:For|For loop]] using a [[ProtoFlux:Start ASync Task|Start ASync Task]].
== Inputs ==
=== * ([[Impulses#ASync|IAsyncOperation]]) ===
Start the execution of this node.
=== Count ([[Type:Int|int]]) ===
How many times to execute LoopIteration ([[Impulses#ASync|AsyncCall]])
=== Reverse ([[Type:Bool|bool]]) ===
Whether to start at Count ([[Type:Int|int]]) and go backwards.
== Outputs ==
=== LoopStart ([[Impulses#ASync|AsyncCall]]) ===
Fires after * ([[Impulses#ASync|IAsyncOperation]]) is called and before any iterations or checks have been done.
=== LoopIteration ([[Impulses#ASync|AsyncCall]]) ===
Fires while the loop is running and after the previous LoopIteration ([[Impulses#ASync|AsyncCall]]) or LoopStart ([[Impulses#ASync|AsyncCall]]) has finished.
=== LoopEnd ([[Impulses|Continuation]]) ===
Fires once the loop has finished all LoopIteration ([[Impulses#ASync|AsyncCall]]) in order.
=== Iteration ([[Type:Int|int]]) ===
The current iteration of the loop.
== Examples ==
<gallery widths=480px heights=480px>
File:Protoflux_example_ASync_For.webp|ASync For being used to do X cloud variable reads in order.
File:Protoflux_example_ASync_For2.webp|ASync For being used to do X web requests in order.
</gallery>


[[Category:ProtoFlux:Flow:Async]]
[[Category:ProtoFlux:Flow:Async]]

Latest revision as of 22:45, 16 February 2024

Async For
*
LoopStart
Count
LoopIteration
Reverse
LoopEnd
Iteration
Async

ASync For is a protoflux node that will do a bunch of async tasks in order in an Async context, waiting for each task to be done before moving to the next one. This is useful if you want to do a bunch of GET String requests but you need to wait for the previous one to be done before doing the next, for a specified number of times. This does not behave the same as using a Start ASync Task on every For loop iteration or even before the For loop using a Start ASync Task.

Inputs

* (IAsyncOperation)

Start the execution of this node.

Count (int)

How many times to execute LoopIteration (AsyncCall)

Reverse (bool)

Whether to start at Count (int) and go backwards.

Outputs

LoopStart (AsyncCall)

Fires after * (IAsyncOperation) is called and before any iterations or checks have been done.

LoopIteration (AsyncCall)

Fires while the loop is running and after the previous LoopIteration (AsyncCall) or LoopStart (AsyncCall) has finished.

LoopEnd (Continuation)

Fires once the loop has finished all LoopIteration (AsyncCall) in order.

Iteration (int)

The current iteration of the loop.

Examples