Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript node.js聊天应用中callback()的含义或源代码_Javascript_Jquery_Callback_Node.js - Fatal编程技术网

Javascript node.js聊天应用中callback()的含义或源代码

Javascript node.js聊天应用中callback()的含义或源代码,javascript,jquery,callback,node.js,Javascript,Jquery,Callback,Node.js,我正在尝试浏览节点聊天演示的源代码。在server.js文件和fu.js文件中,有一个被引用为callback()的函数,如下所示: function loadResponseData(callback) { if (body && headers && !DEBUG) { //if they already have value callback(); return; }... 但据我所知,这个函数从未定义过,我无法将其作为node.js的模块函数、

我正在尝试浏览节点聊天演示的源代码。在server.js文件和fu.js文件中,有一个被引用为callback()的函数,如下所示:

function loadResponseData(callback) { 
if (body && headers && !DEBUG) { //if they already have value
  callback();
  return;
}...
但据我所知,这个函数从未定义过,我无法将其作为node.js的模块函数、jquery的函数或javascript的标准函数

我想我了解回调函数是如何工作的,但我不熟悉这个调用,而且它在这个应用程序中使用得非常频繁,因此我希望对它是什么以及它来自哪里有一个确切的了解

所以我的问题有三个: 1) 函数基于何处:(javascirpt、jquery、node.js,特定于此应用程序) 2) 在哪里可以找到此函数的源代码?
3) 此函数如何与调用它的函数交互?

它是
loadResponseData
函数的参数。如果您这样调用
loadResponseData

loadResponseData(function () {
      res.writeHead(200, headers);
      res.end(req.method === "HEAD" ? "" : body);
    });
然后将执行
loadResponseData
中的
callback()

res.writeHead(200, headers);
res.end(req.method === "HEAD" ? "" : body);
编辑以澄清评论中的问题:

可以说这是JavaScript的一个特性。这里重要的是JavaScript是一种函数式语言:它本身就具有作为数据类型的函数。因此,您可以将它们保存在变量中(实际上,JS中的每个函数名都是一个变量,其内容是一个函数),并将它们传递到参数列表中(如本文所示)。名称
回调
没有什么神奇之处-它也可能是
fn
whoopsie7
。证明:

var doubleAndOne = function(a) {
  return a * 2 + 1;
}
function doItTwice(k, whoopsie7) {
  whoopsie7(whoopsie7(k));
};
doItTwice(5, doubleAndOne); // result is 23
函数(…){…}
被称为匿名函数:它是纯函数值,接受一些参数并对它们进行处理,但没有指定给任何名称。要生成具有名称的函数,可以将其指定给变量,或将其作为参数传递,就像对任何其他值一样。例如,以下各项之间的差别很小:

var five = function() { return 5; };
var doubleFuncValue = function(fn) { return fn() * 2; };
doubleFuncValue(five); // result 10


它是
loadResponseData
函数的参数。如果您这样调用
loadResponseData

loadResponseData(function () {
      res.writeHead(200, headers);
      res.end(req.method === "HEAD" ? "" : body);
    });
然后将执行
loadResponseData
中的
callback()

res.writeHead(200, headers);
res.end(req.method === "HEAD" ? "" : body);
编辑以澄清评论中的问题:

可以说这是JavaScript的一个特性。这里重要的是JavaScript是一种函数式语言:它本身就具有作为数据类型的函数。因此,您可以将它们保存在变量中(实际上,JS中的每个函数名都是一个变量,其内容是一个函数),并将它们传递到参数列表中(如本文所示)。名称
回调
没有什么神奇之处-它也可能是
fn
whoopsie7
。证明:

var doubleAndOne = function(a) {
  return a * 2 + 1;
}
function doItTwice(k, whoopsie7) {
  whoopsie7(whoopsie7(k));
};
doItTwice(5, doubleAndOne); // result is 23
函数(…){…}
被称为匿名函数:它是纯函数值,接受一些参数并对它们进行处理,但没有指定给任何名称。要生成具有名称的函数,可以将其指定给变量,或将其作为参数传递,就像对任何其他值一样。例如,以下各项之间的差别很小:

var five = function() { return 5; };
var doubleFuncValue = function(fn) { return fn() * 2; };
doubleFuncValue(five); // result 10


因此,我是否正确地理解它,将其视为javascript的一个功能。函数loadResponseData定义了两次,一次使用callback作为函数的参数,命令callback()将调用函数的另一个定义?有关于这个实现的好教程吗?使用此方法的简单示例?否,
loadResponseData
只有一个定义,它接受函数作为参数并调用它
callback
,然后从函数体调用此函数。在上面的编辑中,我看到了一个可能不是很好的例子,因此我正确地理解了它,并将其视为javascript的一个特性。函数loadResponseData定义了两次,一次使用callback作为函数的参数,命令callback()将调用函数的另一个定义?有关于这个实现的好教程吗?使用此方法的简单示例?否,
loadResponseData
只有一个定义,它接受函数作为参数并调用它
callback
,然后从函数体调用此函数。在上面的编辑中可以看到我的例子,也许不是很好。