Javascript 如何将数据传递到http创建服务器回调?

Javascript 如何将数据传递到http创建服务器回调?,javascript,node.js,Javascript,Node.js,我是一名学习NodeJS的Java开发人员,在这里努力学习基础知识 var sys = require("sys"), myhttp = require("http"); myhttp.createServer(callback).listen(8082); //How do I pass a String here ? function callback(request,response) { response.writeHeader(200, {"Content-Ty

我是一名学习NodeJS的Java开发人员,在这里努力学习基础知识

var sys = require("sys"),
    myhttp = require("http");

myhttp.createServer(callback).listen(8082);   //How do I pass a String here ?

function callback(request,response) {
    response.writeHeader(200, {"Content-Type": "text/plain"});
    response.write("msg");   //I want to access the string value being passed above
    response.end();
}

在response.write代码行中,我希望动态地传递一些内容。不是哈罗德。简单的方法是创建一个全局变量并使用它,但我想学习如何在传递回调函数时传递字符串(在myhttp.createServer行中)。我试图查看createServer方法的源代码,但无法掌握传递其他参数的方法。

是否需要创建服务器的工厂

var sys = require("sys"),
    myhttp = require("http");

function makeServer(str) {
  myhttp.createServer(callback).listen(8082);

  function callback(request,response) {
      response.writeHeader(200, {"Content-Type": "text/plain"});
      response.write(str);
      response.end();
  }
}
通常,您希望在回调中执行某种类型的数据获取,或者使用高阶函数来创建处理程序

编辑:根据您的注释,您还可以通过返回函数来使用回调构造函数:

var sys = require("sys");
var myhttp = require("http");

function makeCallback(str) {
  return function(request, response) {
      response.writeHeader(200, {"Content-Type": "text/plain"});
      response.write(str);
      response.end();
  }
}

myhttp.createServer(makeCallback('foo')).listen(8082);

基本上,问题是如何动态地将参数注入函数。以下是我的尝试:

var sys = require("sys"),
    myhttp = require("http");

myhttp.createServer(function(request,response){
  var mystr = 'your dynamic value';
  callback(request, response, mystr); // injecting value using custom function
}).listen(8082);   //How do I pass a String here ?

function callback(request,response, str) {
    response.writeHeader(200, {"Content-Type": "text/plain"});
    response.write("msg");   //I want to access the string value being passed above
    response.end();
}

在我看来,这是一个简单而快速的解决方案,我仍处于学习模式,如果有人用更优雅的答案编辑我的解决方案,我欢迎。

callback.message=“hello world”;(没有传递的数据)。您还可以使用bind()将数据设置为这样。2下载!请告诉我原因。这些问题太容易问了吗?@dandavis:如果我做callback.message=“hello world”,你能告诉我如何在回调函数中访问该消息吗?如果你在createServer()回调中定义callback(),那么你基本上可以在该外部函数的任何地方使用“callback.message”,或在回调中;每个回调函数/对象都是唯一的谢谢,但我不想创建工厂。正如我所说,我只是通过实验来学习。更合适的用例是“公共/通用”回调函数,它可以由多个“客户端”函数(如http.createServer)使用。在这种情况下,“客户机”可能希望显示特定的消息。