How would I put a pause in a .forEach interation
1,978
Use await Future.delayed()
to pause for certain duration and a for loop, instead of forEach()
If forEach()
receives async functions, each iteration call will run in a separate asynchronous context which can be reasoned about similarly to parallel code execution. Meanwhile forEach it self will return immediately without waiting until any async function to complete.
Sample: https://dartpad.dartlang.org/a57a500d4593aebe1bad0ed79376016c
main() async {
List<String> testList = ['sfs','sdfsdf', 'sfdsf'];
for(final value in testList) {
await Future.delayed(Duration(seconds: 1));
print('Writing another word $value');
};
}
Author by
Yonkee
Updated on December 09, 2022Comments
-
Yonkee over 1 year
I am attempting to put in a pause between a forEach loop for a list.
I would have thought the timeout would cause a pause for the loop but it just seems to start 3 timers all at once. (In very quick succession.)
startTimeout(int seconds) async { print('Timer Being called now'); var duration = Duration(seconds: seconds); Timer(duration, doSomething()); } startDelayedWordPrint() { List<String> testList = ['sfs','sdfsdf', 'sfdsf']; testList.forEach((value) async { await startTimeout(30000); print('Writing another word $value'); }); }
Any idea how I might do this?
-
Yonkee over 5 yearsTried both for (var in list) and for (int i = 0; list.length; i+) both just trigger the timer all the time and neither allow me to use await Do you have a code sample?
-
Yonkee over 5 yearsThat link is about async, thats not the issue. The issue is that I need a pause in each iteration.
-
Ski over 5 years@Yonkee added sample with
Future.delayed(<duration>)
, if this is what you're looking for? -
Yonkee over 5 yearsThat's the ticket. Thanks