所以,我在一定程度上理解回调函数。例如,我完全理解这一点:
function finalGuy(x) {
alert("Final Number: " + x);
}
function secondGuy(x, callback) {
x = x - Math.sqrt(x);
callback(x);
}
function firstGuy(callback) {
var x = parseInt(prompt("Enter a number"));
x *= x;
secondGuy(x, callback);
}
firstGuy(finalGuy);
然而,当面对这样的事情时,我似乎无法掌握它。
a(function () {
b(function () {
c()
})
});
有人可以将第一个回调序列转换为第二个回调序列吗?具体来说,将一个结果传递给下一个回调,类似于我在第一个示例中的操作。
答案 0 :(得分:2)
这两个产生相同的结果
<强> 1 强>
function acceptCallback(callback) {
callback();
}
function callback() {
console.log('callback invoked');
}
acceptCallback(callback); // => 'callback invoked'
<强> 2 强>
function acceptCallback(callback) {
callback();
}
acceptCallback(function() {
console.log('callback invoked');
});
在第一个示例中传递函数声明,在第二个示例中传递匿名函数
第3。在回调范围内执行操作以传递给另一个回调,又称&#34;回调地狱&#34;
这里没什么特别的,它与前两个例子的语法相同。这对任何人来说都很难理解。
function first(callback) {
callback('from first');
}
function second(callback) {
callback('from second');
}
function third(callback) {
callback('from third');
}
function fourth(n, callback) {
callback(n * 10);
}
first(function(fromFirst) {
var a = 5;
console.log(fromFirst); // 'from first'
second(function(fromSecond) {
console.log(fromSecond); // 'from second'
third(function(fromThird) {
console.log(fromThird); // 'from third'
var b = a + 5; // 10
fourth(b, function(fromFouth) {
console.log(a, b, fromFourth); // 5, 10, 100
})
});
});
});