Để tôi cung cấp cho bạn một ví dụ kiểu Node.js rất đơn giản về cách sử dụng hàm gọi lại:
/**
* 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";
}
});
và HTML sẽ hiển thị kết quả:
<div id="my_result">
Result will come here!
</div>
Bạn có thể chơi với nó tại đây: https://jsfiddle.net/q8gnvcts/ - ví dụ: thử truyền chuỗi thay vì số: myTest ('một số chuỗi', 6, hàm (err, result) .. và xem kết quả.
Tôi hy vọng ví dụ này có ích vì nó thể hiện ý tưởng rất cơ bản về các hàm gọi lại.