5 Stimmen

Eine Javascript-Rückruf-Funktion erstellen?

Ich habe mich gefragt, wie man einen Rückruf in dieses Codestück implementieren kann

MyClass.myMethod("sth.", myCallback);
function myCallback() { // do sth };

var MyClass = {

myMethod : function(params, callback) {

    // do some stuff

    FB.method: 'sth.',
       'perms': 'sth.'
       'display': 'iframe'
      },
      function(response) {

            if (response.perms != null) {
                // How to pass response to callback ?
            } else {
                // How to pass response to callback ?
            }
      });
}

}

13voto

jenming Punkte 799

Drei Möglichkeiten, um "// Wie übergibt man die Antwort an den Rückruf?" zu erreichen:

  1. callback(response, otherArg1, otherArg2);
  2. callback.call(this, response, otherArg1, otherArg2);
  3. callback.apply(this, [response, otherArg1, otherArg2]);

1 ist die einfachste Variante, 2 ist für den Fall, dass Sie die ' this 3 ist ähnlich wie 2, aber Sie können eine variable Anzahl von Argumenten an die Callback-Funktion callback .

Hier ist eine gute Referenz: http://odetocode.com/Blogs/scott/archive/2007/07/05/function-apply-and-function-call-in-javascript.aspx

7voto

Peter C Punkte 6091

Alles, was Sie tun müssen, ist, die Callback-Funktion auf die übliche Weise aufzurufen. In diesem Fall würden Sie einfach Folgendes tun callback(response) .

var MyClass = {

myMethod : function(params, callback) {

// do some stuff

FB.method: { 'sth.',
   'perms': 'sth.'
   'display': 'iframe'
  },
  function(response) {

        if (response.perms != null) {
            // How to pass response to callback ?
            // Easy as:
            callback(response);
        } else {
            // How to pass response to callback ?
            // Again:
            callback(response);
        }
  });
}

}

1voto

Anurag Punkte 136648

Rufen Sie einfach die übergebene Funktion auf.

callback(response)

1voto

Andreas Gohr Punkte 4289

Ich denke, Sie können einfach aufrufen callback(response.perms) dort. Sie könnten es auch als

Mitglied Ihrer Klasse:

  MyClass.cb = callback;

und später anrufen:

 MyClass.cb(response.perms)

1voto

Chris Baker Punkte 48263

Sie sind nah dran... verwenden Sie einfach den Rückruf. In diesem Fall können Sie einen Abschluss bilden.

var MyClass = {

myMethod : function(params, callback) {

    // do some stuff

    FB.method: 'sth.',
       'perms': 'sth.'
       'display': 'iframe'
      },
      function(response) {

            if (response.perms != null) {
                callback(response);
            } else {
                // response is null, but you can pass it the same as you did above - if you want to.  Probably better to have a generic failure handler
                ajaxFailHandler();
            }
      });
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X