365 Stimmen

JavaScript: Übergabe von Parametern an eine Callback-Funktion

Ich versuche, einen Parameter an eine Funktion zu übergeben, die als callback Wie kann ich das tun?

Dies ist mein Versuch:

function tryMe(param1, param2) {
  alert(param1 + " and " + param2);
}

function callbackTester(callback, param1, param2) {
  callback(param1, param2);
}

callbackTester(tryMe, "hello", "goodbye");

1voto

Vlado Punkte 2927

Ich möchte Ihnen ein sehr einfaches Beispiel für die Verwendung eines Rückrufs im Node.js-Stil geben:

/**
 * Function expects these arguments: 
 * 2 numbers and a callback function(err, result)
 */
var myTest = function(arg1, arg2, callback) {
  if (typeof arg1 !== "number") {
    return callback('Arg 1 is not a number!', null); // Args: 1)Error, 2)No result
  }
  if (typeof arg2 !== "number") {
    return callback('Arg 2 is not a number!', null); // Args: 1)Error, 2)No result
  }
  if (arg1 === arg2) {
    // Do somethign complex here..
    callback(null, 'Actions ended, arg1 was equal to arg2'); // Args: 1)No error, 2)Result
  } else if (arg1 > arg2) {
    // Do somethign complex here..
    callback(null, 'Actions ended, arg1 was > from arg2'); // Args: 1)No error, 2)Result
  } else {
    // Do somethign else complex here..
    callback(null, 'Actions ended, arg1 was < from arg2'); // Args: 1)No error, 2)Result
  }
};

/**
 * Call it this way: 
 * Third argument is an anonymous function with 2 args for error and result
 */
myTest(3, 6, function(err, result) {
  var resultElement = document.getElementById("my_result");
  if (err) {
    resultElement.innerHTML = 'Error! ' + err;
    resultElement.style.color = "red";
    //throw err; // if you want
  } else {
    resultElement.innerHTML = 'Result: ' + result;
    resultElement.style.color = "green";
  }
});

und den HTML-Code, der das Ergebnis wiedergeben wird:

<div id="my_result">
  Result will come here!
</div>

Sie können hier mit ihm spielen: https://jsfiddle.net/q8gnvcts/ - zum Beispiel versuchen, eine Zeichenkette statt einer Zahl zu übergeben: myTest('some string', 6, function(err, result) und sehen Sie das Ergebnis.

Ich hoffe, dass dieses Beispiel hilfreich ist, da es die grundlegende Idee von Rückruffunktionen darstellt.

1voto

Dmitry Grinko Punkte 11152
function tryMe(param1, param2) {
  console.log(param1 + " and " + param2);
}

function tryMe2(param1) {
  console.log(param1);
}

function callbackTester(callback, ...params) {
  callback(...params);
}

callbackTester(tryMe, "hello", "goodbye");

callbackTester(tryMe2, "hello");

mehr lesen über die Streusyntax

1voto

Teocci Punkte 5144

Ich versuche, einen Parameter an eine Funktion zu übergeben, die als callback Wie kann ich das tun?

Ich denke, er will damit andeuten, dass er die Funktion so aufrufen möchte callbackTester(tryMe, "hello", "goodbye") . Zu diesem Zweck können wir Folgendes verwenden der Rest Operator (...) . Dieser Operator nimmt die Argumente, die eine Funktion erhält, und speichert sie in einem echte Palette die wir für den Zugriff in unserem callback Funktion.

Nun könnten einige andere Entwickler auch argumentieren, dass wir die arguments "Array". Das ist in Ordnung, aber wir sollten damit vorsichtig sein. arguments es kein echtes Array sondern ein array-ähnliches Objekt mit einer Längeneigenschaft.

Hier ist ein Beispiel für die Verwendung des Rest-Operators:

function tryMe(params) {
  console.log(params.join(', '));
}

function callbackTester(callback, ...params) {
  callback(params);
}

callbackTester(tryMe, 'hello', 'goodbye', 'hi again');
callbackTester(tryMe, 'hello', 'goodbye');
callbackTester(tryMe, 'hello');

0voto

Code_Crash Punkte 672

Ich war auf der Suche nach der gleichen Sache und am Ende mit der Lösung und hier ist es ein einfaches Beispiel, wenn jemand will, durch diese zu gehen.

var FA = function(data){
   console.log("IN A:"+data)
   FC(data,"LastName");
};
var FC = function(data,d2){
   console.log("IN C:"+data,d2)
};
var FB = function(data){
   console.log("IN B:"+data);
    FA(data)
};
FB('FirstName')

Auch zur anderen Frage gepostet aquí

0voto

Santhos Jery Punkte 1
//Suppose function not taking any parameter means just add the GetAlterConfirmation(function(result) {});
GetAlterConfirmation('test','messageText',function(result) {
                        alert(result);
    }); //Function into document load or any other click event.

function GetAlterConfirmation(titleText, messageText, _callback){
         bootbox.confirm({
                    title: titleText,
                    message: messageText,
                    buttons: {
                        cancel: {
                            label: '<i class="fa fa-times"></i> Cancel'
                        },
                        confirm: {
                            label: '<i class="fa fa-check"></i> Confirm'
                        }
                    },
                    callback: function (result) {
                        return _callback(result); 
                    }
                });

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