• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Chaining JavaScript Functions

 
Ranch Hand
Posts: 80
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I was wondering if there is a way in JavaScript to make sure that one function doesn't run until a previous one is finished. Generally, it isn't a problem. But I do run some functions in my work that take a few seconds to complete. And by then the next function in the line has already started. Problem is the second function might be reliant on data from the first. Take this example code for example:





If you open up your console and run this, you'll notice that it prints all of the numbers from the B loop before the A loop, because the A loop has a 2 second delay on it. I need to find a way to be able to line up multiple functions, but make sure that B doesn’t run until A is done, and C doesn't run until B is done, etc. Is this possible?
 
Sheriff
Posts: 67746
173
Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
JavaScript is not multi-threaded so functions never run until whatever's currently running stops. If you delay the function using setTimeout, then of course it's not going to run until everything else that started running before it has finished.

If you want fine-grained control over queuing up functions, you could check out the queue() and dequeue() functions of jQuery.
reply
    Bookmark Topic Watch Topic
  • New Topic