Is there a sleep/wait javascript function for firefox?

Please support our JavaScript / DHTML / AJAX advertiser: PostgreSQL or MySQL? Compare and contrast the two most popular open source databases
Reply

Join Date: Aug 2005
Posts: 75
Reputation: Sailor_Jerry is an unknown quantity at this point 
Solved Threads: 2
Sailor_Jerry's Avatar
Sailor_Jerry Sailor_Jerry is offline Offline
Junior Poster in Training

Is there a sleep/wait javascript function for firefox?

 
-1
  #1
Jun 6th, 2006
I need to suspend processing in my script for a few seconds, and i am not sure how.

Thanks, sj
Reply With Quote Quick reply to this message  
Join Date: Dec 2004
Posts: 1,655
Reputation: tgreer is an unknown quantity at this point 
Solved Threads: 35
Team Colleague
tgreer tgreer is offline Offline
Made Her Cry

Re: Is there a sleep/wait javascript function for firefox?

 
0
  #2
Jun 6th, 2006
There is no "sleep" or "wait" operator in JavaScript. You can set a timer, though, and when the timer expires, it will execute a function.

JavaScript / DHTML / AJAX Syntax (Toggle Plain Text)
  1. setTimeout("alert('hello')",1250);

You could have it wait so many milliseconds, and then execute an empty procedure, I suppose.
Reply With Quote Quick reply to this message  
Join Date: May 2005
Posts: 182
Reputation: alpha_foobar is an unknown quantity at this point 
Solved Threads: 3
alpha_foobar's Avatar
alpha_foobar alpha_foobar is offline Offline
Junior Poster

Re: Is there a sleep/wait javascript function for firefox?

 
1
  #3
Jun 6th, 2006
What you usually do is what Tom has suggested, but you would invoke a call to the code that you want to execute after timeout.

So if you had an algorithm like such:

JavaScript / DHTML / AJAX Syntax (Toggle Plain Text)
  1. function myFunction(){
  2. doSomething();
  3. wait(500);
  4. doSomethingElse();
  5. }

You would implement this with:

JavaScript / DHTML / AJAX Syntax (Toggle Plain Text)
  1. function myFunction(){
  2. doSomething();
  3. setTimeout(function(){doSomethingElse();}, 500);
  4. }

This effective 'pauses' the execution of your code.
Reply With Quote Quick reply to this message  
Join Date: Aug 2005
Posts: 75
Reputation: Sailor_Jerry is an unknown quantity at this point 
Solved Threads: 2
Sailor_Jerry's Avatar
Sailor_Jerry Sailor_Jerry is offline Offline
Junior Poster in Training

Re: Is there a sleep/wait javascript function for firefox?

 
0
  #4
Jun 7th, 2006
Just what i needed.

Thanks guys, sj
Reply With Quote Quick reply to this message  
Join Date: Dec 2006
Posts: 6
Reputation: nemo5 is an unknown quantity at this point 
Solved Threads: 0
nemo5 nemo5 is offline Offline
Newbie Poster

Re: Is there a sleep/wait javascript function for firefox?

 
0
  #5
Dec 31st, 2006
This solution is not really a sleep. It effectively postpones the execution of function called by the setTimeout method, but javasctipy is asynchronous, so the execution of the commands following the setTimeout method will happend immediately after.
After a couple of google queries I found the only solution to sleep was to execute this function:

JavaScript / DHTML / AJAX Syntax (Toggle Plain Text)
  1. function pause(millis)
  2. {
  3. var date = new Date();
  4. var curDate = null;
  5.  
  6. do { curDate = new Date(); }
  7. while(curDate-date < millis)
  8. }


Problem with this approach is when you need a few of shor sleeps one after another. In this case the only thing that happends is the cpu usage is gonna hit the roof and the script gets paused till the last pause is executed.
Last edited by nemo5; Dec 31st, 2006 at 9:26 am. Reason: code section change
Reply With Quote Quick reply to this message  
Join Date: Jan 2006
Posts: 2
Reputation: Mark Whitt is an unknown quantity at this point 
Solved Threads: 0
Mark Whitt Mark Whitt is offline Offline
Newbie Poster

Re: Is there a sleep/wait javascript function for firefox?

 
0
  #6
Jan 17th, 2008
Thanks nemo5 for your input! I needed a way to cause a method to stop in its tracks so the calling method didn't think the currentl one was done yet, and this should do it.
Reply With Quote Quick reply to this message  
Join Date: Mar 2008
Posts: 1
Reputation: kanian77 is an unknown quantity at this point 
Solved Threads: 0
kanian77 kanian77 is offline Offline
Newbie Poster

Re: Is there a sleep/wait javascript function for firefox?

 
0
  #7
Mar 21st, 2008
The two approaches (do while, and dosomething/settimeout(dosomeelse)) are used in different situations.
1. do while
You just want to pause, but are not expecting anything to happen in the browser while waiting (no document loading, no event). The javascript interpreter will be busy executing the while loop.
(Check http://www.sean.co.uk/a/webdesign/javascriptdelay.shtm)
2. dosomething/settimeout(dosomeelse)
If you want your code to wait for something to happen, like a dom node being created or loaded you have to resort to other tactics.
Joseph Moore at http://40withegg.com/2007/1/5/a-non-...ript-wait-loop calls it a non-cpu intensive wait. Meaning the browser can still function and thus perform job that your code is waiting on.
Reply With Quote Quick reply to this message  
Join Date: Nov 2008
Posts: 1
Reputation: terrybleger is an unknown quantity at this point 
Solved Threads: 0
terrybleger terrybleger is offline Offline
Newbie Poster

Re: Is there a sleep/wait javascript function for firefox?

 
0
  #8
Nov 23rd, 2008
This code will freeze any threads after it's execution, so this is a useless one:
  1. function jsWaitForDelay(delay) {
  2. var startTime = new Date();
  3. var endTime = null;
  4. do {
  5. endTime = new Date();
  6. } while ((endTime - startTime) < delay);
  7. }

This codes will NOT freeze any threads after it's execution but only works for Firefox:
  1. /**
  2.  * Netscape compatible WaitForDelay function.
  3.  * You can use it as an alternative to Thread.Sleep() in any major programming language
  4.  * that support it while JavaScript it self doesn't have any built-in function to do such a thing.
  5.  * parameters:
  6.  * (Number) delay in millisecond
  7. */
  8. function nsWaitForDelay(delay) {
  9. /**
  10.   * Just uncomment this code if you're building an extention for Firefox.
  11.   * Since FF3, we'll have to ask for user permission to execute XPCOM objects.
  12.   */
  13. netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
  14.  
  15. // Get the current thread.
  16. var thread = Components.classes["@mozilla.org/thread-manager;1"].getService(Components.interfaces.nsIThreadManager).currentThread;
  17.  
  18. // Create an inner property to be used later as a notifier.
  19. this.delayed = true;
  20.  
  21. /* Call JavaScript setTimeout function
  22.   * to execute this.delayed = false
  23.   * after it finish.
  24.   */
  25. setTimeout("this.delayed = false;", delay);
  26.  
  27. /**
  28.   * Keep looping until this.delayed = false
  29.   */
  30. while (this.delayed) {
  31. /**
  32.   * This code will not freeze your browser as it's documented in here:
  33.   * https://developer.mozilla.org/en/Code_snippets/Threads#Waiting_for_a_background_task_to_complete
  34.   */
  35. thread.processNextEvent(true);
  36. }
  37. }
Regards,
Terry
Reply With Quote Quick reply to this message  
Join Date: Mar 2009
Posts: 1
Reputation: tigerofdoom is an unknown quantity at this point 
Solved Threads: 0
tigerofdoom tigerofdoom is offline Offline
Newbie Poster

Re: Is there a sleep/wait javascript function for firefox?

 
0
  #9
Mar 27th, 2009
I realize this is a pretty old thread, but it is easily found in Google.

Any approach that uses a while loop to wait is never going to be the best answer. We often refer to this technique as "spin wait" because it causes the cpu to keep crunching away at a process, sometimes stopping the entire machine (especially on older computers) meaning that your javascript wait could be intense enough for some users that their computing experience waits with you. This is not optimal.

While Javascript unfortunately does not provide a method of actually pausing the thread, setTimeout is your best bet. If there's any way that you can go to the trouble of implementing AlphaFoobar's method, then you 100% certainly should.
Last edited by tigerofdoom; Mar 27th, 2009 at 9:51 pm. Reason: poor wording, missed comma
Reply With Quote Quick reply to this message  
Join Date: Oct 2009
Posts: 1
Reputation: jsreader is an unknown quantity at this point 
Solved Threads: 0
jsreader jsreader is offline Offline
Newbie Poster

Re: Is there a sleep/wait javascript function for firefox?

 
-1
  #10
Oct 4th, 2009
Here is a website that has implemented a javascript sleep function in a few different ways. It also shows what methods are compatible with what browsers and operating systems.

http://www.devcheater.com
Reply With Quote Quick reply to this message  
Reply

Message:




Views: 79416 | Replies: 11
Thread Tools Search this Thread



Tag cloud for JavaScript / DHTML / AJAX
About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC