I have a class with many objects, and I need to see if the function for each of these objects is done being executed.
I have tried using an array, where I keep track of each function's status, but it's pretty inefficient. Are there any other ways to do this?
The objects are for dialogue in a small game I'm making.
This is the example of the code I have right now:
var functionExecuted = [false, false, false, false, false, false];
The function in the class takes a parameter of where the object's function is in the array. At the end of the function in the class, I do this:
functionExecuted[this.funcExecutedIndex] = true;
And then later once the function is finished executed, I continue on with the program
The reason why I have to check for this is because I'm working with the HTML canvas, and if I don't wait for the function to finish being executed, it draws on top of it.
functions in JS are just objects, as such you can store them in a Set.
The nice thing about using a Set's, it avoids you having to maintain that funcExecutedIndex
, and you can use it to find out if a particular function has been executed, and it's size can be used to check if all functions have been executed..
Below is a simple example.
class Procs { executed = new Set(); one() { this.executed.add(this.one); } two() { this.executed.add(this.two); } whatsExecuted() { console.log('one executed: ' + this.executed.has(this.one)); console.log('two executed: ' + this.executed.has(this.two)); } allExecuted() { return this.executed.size === 2; } } const procs = new Procs(); procs.whatsExecuted(); console.log('---'); procs.one(); procs.whatsExecuted(); console.log('all done: ' + procs.allExecuted()); console.log('---'); procs.two(); procs.whatsExecuted(); console.log('all done: '+ procs.allExecuted());
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.