0

I have this:

var MyObject = {};

MyObject.doStuff = function(someParam) {
   var webdav = new Webdav("addr","port");    

   var handler = {
      onSuccess: MyObject.Success,
      onError: MyObject.Fail
   }

   webdav.PUT(handler, filename, options);
}

MyObject.Success = function(result) {
    alert('status ' + result.status + result.statusstring);
}

I'm using exo platform javascript library for webdav access (if it matters)

The handler I'm creating will call MyObject.Success if webdav.PUT is done succesfully. How can i send the someParam to that function too?

Put in another way, after a successful or failed operation, I'm interested in doing something with the someParam, depending of the result.

Andrei S
  • 6,486
  • 5
  • 37
  • 54

3 Answers3

1

You should look into javascript objects, and try to contain the code within one scope. Something like this:

var MyObject = {

    var doStuff = function(someParam) {
        var webdav = new Webdav("addr","port");    

        var handler = {
          onSuccess: function(result) {success(result, someParam);},
          onError: function() { fail(); }
        }

       webdav.PUT(handler, filename, options);
    }

    var success = function(result, someParam) {
        alert('status ' + result.status + result.statusstring);
    }

    var fail = function() {}

    this.doStuff = doStuff;
}

var myObj = new MyObject();
myObj.doStuff(param);
Niklas Wulff
  • 3,497
  • 2
  • 22
  • 43
1

This may be what you'r looking for: javascript callback function and parameters

or maybe: http://onemarco.com/2008/11/12/callbacks-and-binding-and-callback-arguments-and-references/

var someParam = 'foo';
var handler = {
     onSuccess: function(result) {success(result, someParam);},
     onError: function() { fail(); }
    }
Community
  • 1
  • 1
herostwist
  • 3,778
  • 1
  • 26
  • 34
  • Did you borrow from me, or do we have the exact same style to javascript? :-) Or wait, I just edited mine - and it looks like yours! – Niklas Wulff Apr 21 '11 at 10:49
1

One simple way to do it, taking advantage of JavaScript closures:

var handler = {
   onSuccess: function(result) { MyObject.Success(result, someParam); },
   onError: MyObject.Fail
}
Alex Barrett
  • 16,175
  • 3
  • 52
  • 51