匿名回调函数如何访问调用函数返回的数据?

时间:2017-02-24 16:23:16

标签: javascript node.js

很抱歉,如果这个问题太天真,无法提问或已经得到解答。我对javascript匿名回调函数感到困惑,它可以访问调用函数返回的数据。 E.g:

var server = http.createServer(function(request, response){
    response.writeHead(200, {'Content-Type': 'text/html'});
    response.write('hello world');
    response.end();
});

任何人都可以解释匿名函数的参数如何访问http.createServer()函数返回的数据?或者我出错了?提前为任何错误道歉,因为这是我的第一个问题。

3 个答案:

答案 0 :(得分:0)

createServer数据不会返回

createServer将在未来的某个时刻调用函数并在当时传递参数。

您无法看到执行该操作的代码(嗯,您可以,因为Node.js是开源的,如果您真的想要,可以将其挖出来),但您不需要因为它的行为是记录在案的。

与此相比:



var thing = example_that_takes_a_callback(function(request, response) {
  console.log(request, response);
});

function example_that_takes_a_callback (callback) {

    callback(1,2);
    setTimeout(function () { callback(3,4); }, 1000);
    setTimeout(function () { callback(5,6); }, 2000);
    return 1;
}




答案 1 :(得分:0)

简单地说:您作为参数传递给createServer()的匿名函数在后者的代码中被调用,并带有适当的参数request&响应。

答案 2 :(得分:0)

外部函数将回调作为参数,并使用一些参数调用它。也许一个更简单的例子可以更好地解释它:

有一个函数将另一个函数作为参数,并使用作为参数传递的'value'字符串调用它:

function fn(cb) {
    cb('value');
}

现在当你跑:

fn(function (val) {
    console.log(val);
});

你将打印字符串'value'但不是因为第二个(匿名)函数可以访问fn函数内的变量或值,但是因为匿名函数将一些数据作为参数传递 - 在此示例中称为val