

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. function wait(ms)īut, if you have code like this: stateChange(-1) However, if in some non-production case you really want to hang the main thread for a period of time, this will do it. CLI app framework command line interface Text User Interface (TUI) framework color. They are inspired by Kotlin stdlib, and Rust to write code as expressions rather than statements, colorized text, powerfu. Joseph Silber has demonstrated that well in his answer. The r3bl-ts-utils package is a set of useful TypeScript functions and classes that can be used in Node.js and browser environments. 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.
