匿名回调函数

Anonymous callback functions

所以,我对回调函数有一定的了解。例如,我完全理解这个:

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()
    })
});

有人可以将第一个回调序列翻译成与第二个回调类似的工作示例吗?具体来说,将一个结果传递给下一个回调,类似于我在第一个示例中所做的。

这两个产生相同的结果

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。在要传递给另一个回调的回调范围内执行操作,又名 "callback hell"

这里没什么特别的,它的语法与前两个示例相同。这对任何人来说都很难阅读。

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
      })
    });
  });
});