以下示例演示了回调:
示例1: - 使用回调
<script>
// The callback method
function meaningOfLife() {
console.log("The meaning of life is: 42");
}
// A method which accepts a callback method as an argument
function printANumber(number, callback) {
console.log("The number you provided is: " + number);
callback();
}
// Driver method
printANumber(6, meaningOfLife);
</script>
结果:
The number you provided is: 6
The meaning of life is: 42
示例2: - 正常函数调用
<script>
// A simple function
function meaningOfLife() {
console.log("The meaning of life is: 42");
}
// Another simple function
function printANumber(number) {
console.log("The number you provided is: " + number);
meaningOfLife();
}
// Call to second function
printANumber(6);
</script>
结果:
The number you provided is: 6
The meaning of life is: 42
现在,当我只通过正常的函数调用得到我的结果时,那么Callback的用例是什么?为什么这么大惊小怪?即使从另一个函数内部对方法进行简单调用,我也可以完成任务(Always)。为什么在世界上那么回调的大惊小怪呢?在这个例子中做了哪些特别的工作?
答案 0 :(得分:3)
为什么在世界上那时会有大惊小怪的回调呢?
因为那时调用者决定接下来应该调用什么。
答案 1 :(得分:2)
例如,您需要在10ms延迟后计算值,然后返回它,但您不希望主线程等待10ms。 然后你可以做这样的事情:
function doSomeStuff(callback) {
var i = 12;
callback(i);
}
setTimeout(function() {
doSomeStuff(function(i) {
console.log(i);
});
}, 10);
// Do something else before "doSomeStuff" is called
&#13;
回调通常用于单线程语言的异步方法调用(例如,通过XMLHTTPRequest加载资源时)
当然,您应该阅读有关js中闭包的一些信息