![]() ![]() So, looping waiting for some variable to change will never work because no other code can run to change that variable. Because Javascript runs your code in only a single thread, when you're looping nothing else can run (no other event handlers can get called). If you did try to "pause" by looping, then you'd essentially "hang" the Javascript interpreter for a period of time. Instead, any code that you want to run delays must be inside the setTimeout() callback function (or called from that function). You cannot just pause javascript execution for a predetermined amount of time. It will not wait until after the timeout fires in the stateChange() function. The console.log() statement will run immediately. You just need to await on a promise that resolves after a given period of time. However, you can pause an async function call without blocking the rest of the JavaScript runtime. ![]() function wait(ms)īut, if you have code like this: stateChange(-1) Since JavaScript is single-threaded, C-style sleep (2) would block the entire JavaScript runtime for 2 seconds, and that isnt very useful. However, if in some non-production case you really want to hang the main thread for a period of time, this will do it. Joseph Silber has demonstrated that well in his answer. You really shouldn't be doing this, the correct use of timeout is the right tool for the OP's problem and any other occasion where you just want to run something after a period of time.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |