Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

While loops using Await Async.

This Javascript function seems to use the while loop in an asynchronous way. Is it the correct way to use while loops with asynchronous conditions?

 var Boo;  var Foo = await getBar(i)  while(Foo) {     Boo = await getBar3(i)     if (Boo) {       // something     }     Foo = await getBar(i)     i++   } 

What I think it does is this:

var Boo; var Foo; getBar(i).then( (a) => {   Foo = a;   if(Foo) {     getBar3(i).then( (a) => {       Boo = a       if(Boo) {         //something         i++;         getBar(i).then( (a} => { Repeat itself...}        }    }   } }) 

If that's totally false could you show another way to do it with async await + while loop?

Thanks!!

like image 462
Hcharlanes Avatar asked Aug 23 '16 21:08

Hcharlanes


2 Answers

Is it the correct way to use while loops with asynchronous conditions?

Yes. async functions simply suspend their execution on every await until the respective promises fulfills, and any control structures continue to work as before.

like image 106
Bergi Avatar answered Sep 18 '22 17:09

Bergi


Yep, it's fine to do it like this:

let stopped = false          // infinite loop while(!stopped) {     let res = await fetch('api link')      if (res.something) stopped = true // stop when you want } 
like image 26
ZiiMakc Avatar answered Sep 16 '22 17:09

ZiiMakc