2

How do I create a custom event for a javascript class?
Example Code

function somefunction(url){
   this.h_world = function(){/*some random code to do*/ };
}

var hw = new somefunction();

Now, for a very simple example, how do I create a custom event handler for this when hw.h_world has finished executing and return some data with it?

For example

var hw = new somefunction();
hw.h_world();
hw.finished_h_world = function(somedata){
  alert(somedata);
}
1
  • No events are generated by the simple execution of JavaScript code (outside of some special behavior in Firefox around property "watch" settings). Commented Mar 12, 2012 at 15:59

2 Answers 2

5

What you need is a callback function:

function somefunction(url){
   this.h_world = function(callback){
      var somedata = 'some data';
      callback(somedata);
   };
}

And then:

var hw = new somefunction();
hw.h_world(function(somedata){
    alert(somedata); // Will alert 'some data';
});

Here is a jsfiddle: http://jsfiddle.net/remibreton/xzeEd/

Sign up to request clarification or add additional context in comments.

Comments

2

you can pass a callback function to h_world function and execute it on finish of it

function somefunction(url){
   this.h_world = function(cb){
      //do some operation
      if (cb && typeof cb === 'function') {
         cb();
         //cb.call(this, args1, arg2...); //execute callback in scope of current object
      }
   };
}

or you can add a function to your class like this

function somefunction(url){
   this.h_world = function(){
      //do operation
      this.h_world_finish(parameters);   
   };
   this.h_world_finish = function () {};
}

var obj = new someFunction(url);
obj.h_world_finish = function (arg) {
    alert("finished h_world");
};
obj.h_world();

2 Comments

That achieved what I was looking for. Thanks
How is this diff... forget it.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.