我一直在浏览整个networking,寻找关于延续的启示,想到最简单的解释会如此完全混淆像我这样的JavaScript程序员,令人惊讶。 当大多数文章用Scheme中的代码解释延续或使用monad时,情况尤其如此。 现在我终于认为我已经理解了延续的本质,我想知道我所知道的是否是事实。 如果我的想法是真实的,那么这是无知而不是启蒙。 所以,这就是我所知道的: 在几乎所有的语言中,函数显式地将值(和控制)返回给调用者。 例如: var sum = add(2, 3); console.log(sum); function add(x, y) { return x + y; } 现在,在使用第一类函数的语言中,我们可以将控制和返回值传递给callback函数,而不是显式地返回给调用者: add(2, 3, function (sum) { console.log(sum); }); function add(x, y, cont) { cont(x + y); } 因此,不是从函数返回值,而是继续使用另一个函数。 所以这个函数被称为第一个的延续。 那么延续和callback有什么区别呢?