Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.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/node.js/38.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`response.end`event是否发送可选的`data`和`encoding`参数?_Javascript_Node.js_Event Handling - Fatal编程技术网

Javascript node.js`response.end`event是否发送可选的`data`和`encoding`参数?

Javascript node.js`response.end`event是否发送可选的`data`和`encoding`参数?,javascript,node.js,event-handling,Javascript,Node.js,Event Handling,文档定义了response.end([data][,encoding][,callback]),并说明: 如果指定了数据,则相当于调用response.write(数据, 编码),然后是response.end(回调) 我是否正确使用了end事件,或者任何人都不太可能将数据传递到end事件中 var http = require('http'); http.get( process.argv[2], function (response) { response.

文档定义了
response.end([data][,encoding][,callback])
,并说明:

如果指定了数据,则相当于调用response.write(数据, 编码),然后是response.end(回调)

我是否正确使用了
end
事件,或者任何人都不太可能将数据传递到
end
事件中

var http = require('http');

http.get(
    process.argv[2],
    function (response) {
        response.setEncoding('utf8');
        response.on('error', console.error);
        response.on('data', console.log);

        // Check for data and exit on 'end' event
        response.on(
            'end',
            function (data, encoding) {
                if ( null != data ) {
                    console.log(data.toString(encoding));
                }
                return;
            }
        );
    }
);
response.on('end'…)
表示响应中没有更多数据

如文档中所述,
数据
分块发送。这是一个可读的流,
on('end')
允许您传入自己的数据,您可以在其中包含简单的文本,这就是编写的方式:

这些文档基本上解释了这两种方法

例如:

response.write('Hello World\n');
response.end();

OR
response.end('Hello World\n');
一般来说,这对于少量数据来说是好的,但是数据的分块是在
response.on('data')中处理的
可以将数据放入数组中,然后将该数组传递到
response.on('end'…)
,这是我建议对较大的分块数据执行此操作的方式。一个很好的练习可能是将数据记录在回调中,以查看它是否通过

编辑:

对于您在评论中提出的问题:

您的代码是正确的,并且是可选的,这样考虑,您向该函数发送一些东西,一个请求,它执行一个响应,该响应如果它的大部分被分成块,您可以在(数据)中获取这些块,您可以在最后使用
on(end)
将其发送回来,就这么简单


希望这会有所帮助。

您是否能够看到最后的数据?在我的特定实例中,它是
未定义的
,如果它没有被传递的话。我期待这是因为它是可选的。谢谢你这么快的响应,但我仍然不知道我上面展示的代码是正确的还是必要的?它是正确的,可选的,这样想,你向那个函数发送一些东西,一个请求,它做一个响应,这个响应如果它的大部分被分成块,你可以在(数据)中获取这些数据块,你可以在最后使用on(end)将其发送回来,就这么简单,我会在你更详细的回答之前检查你是否将其移动到你的答案。