javascript 其中在官方文档中解释了Response的事件.on(data)和.on(close)

bzzcjhmw  于 2023-06-28  发布在  Java
关注(0)|答案(2)|浏览(188)

我想知道在nodejs的官方文档中,responseEvent dataEvent close在哪里解释。我想知道这些事件是在哪里解释的,这样我就可以了解还有哪些其他事件可以使用。
我正在检查这些官方文档here,但我找不到任何解释,也找不到可以在response对象上触发的其他事件

我的验证码:

var options = {
    protocol:'https:',
    host: constants.END_POINT_HOST_JK,
    path: constants.END_POINT_PATH_JK,
    method:'GET',
    headers: {
        'Content-Type': 'application/json'
      }
};
  
var callback = (response)=>{
    if (response.statusCode !== 200) {
        console.error("Did not get an OK from the server. Code:",response.statusCode);
        console.error("Did not get an OK from the server. Msg:",response.statusMessage);
        res.resume();
        return;
      }
    var data = '';
    response.on('data', (chunk)=>{
        data += chunk;
    });

    response.on('close', ()=>{
        console.log('Retrieved all data');
        console.log(JSON.parse(data));
    });
}

var req=https.request(options, callback);
req.on('error', (e) => {
    console.error("problem with request:", e);
});
req.end();
am46iovg

am46iovg1#

您访问的页面不存在返回首页
https://nodejs.org/api/events.html#eventsonemitter-eventname-options

  • 如何到达

因此,在节点文档中,在左侧菜单上向下滚动,直到您到达事件:https://nodejs.org/api/events.html,然后有events.on()
您的链接指向nodejs文档的http部分。尝试使用左侧菜单来访问节点的不同方面。
编辑:我上面的回答并没有回答这个问题的整个范围,正如@Quentin所提到的。
我对此做了更多的研究。
使用node.js事件的EventEmitter类,您可以创建自定义事件,这些事件可以被触发,并由events.on()函数处理。下面是一个例子:

const EventEmitter = require('events');

// Create a new instance of EventEmitter
const emitter = new EventEmitter();

// Register an event handler for 'myEvent'
emitter.on('myEvent', (arg1, arg2) => {
  console.log('myEvent occurred with arguments:', arg1, arg2);
});

// Emit the 'myEvent' event
emitter.emit('myEvent', 'Hello', 'World');

因此,没有可以构建的事件的确定的列表。
然而,在node.js中,有一个预定义的事件列表,可以被events.on()函数捕获,并且总是可以被发出。这个列表很多,很难编译(我也找不到它)这里是一个压缩版本,包括更常用的:

EventEmitter(events模块)

newListener:添加新监听器时发出。
removeListener:删除侦听器时发出。

HTTP模块

request:当收到HTTP请求时发出。
response:在发送HTTP响应时发出。
close:服务器关闭时发出。

流模块

data:当数据可从可读流中读取时发出。
end:当可读流中没有更多的数据要消耗时发出。
finish:当所有数据都被刷新到可写流时发出。

文件系统(fs模块)

open:打开文件时发出。
close:关闭文件时发出。

子进程模块

exit:子进程退出时发出。

Net模块

connect:成功建立套接字连接时发出。
data:在套接字上接收数据时发出。
end:套接字的另一端发送FIN数据包时发出。

定时器函数(setTimeout,setInterval)

timeout:定时器功能完成时发出。

DNS模块

lookup:DNS查询完成时发出。

流程

exit:当Node.js进程即将退出时发出。
uncaughtException:发生未处理异常时发出。
warning:发出警告时发出。

Readline模块

line:readline.Interface示例触发line事件时发出。
close:当readline.Interface示例触发close事件时发出。

HTTP服务器

checkContinue:当服务器收到一个请求时发出,该请求的expect为:100-继续标头。
clientError:当客户端连接发出错误时发出。

HTTP客户端(http.request)

socket:当socket被分配给请求时发出。
abort:当请求被中止时发出。

流媒体

error:当流中发生错误时发出。

子进程(child_process. spawn,child_process. fork)

message:当子进程使用process.send()发送消息时发出。

DNS Resolver(dns.resolve,dns.lookup)

error:在DNS解析期间发生错误时发出。

EventEmitter

error:当EventEmitter示例中发生错误时发出。

关闭和数据

在问题中,您询问了数据和关闭。
数据:
. on('data ',callback)事件处理程序通常用于Node.js中的可读流。它用于处理“data”事件,该事件在数据可从流中读取时发出。此事件通常用于使用从流中读取的数据并以某种方式处理它。传递给. on('data ',callback)的回调函数将在每次发出' data '事件时以data作为参数调用。
下面是一个示例,演示了如何使用具有可读流的'data'事件处理程序:

const fs = require('fs');

// Create a readable stream
const readableStream = fs.createReadStream('file.txt');

// Handle the 'data' event
readableStream.on('data', (data) => {
  console.log('Data received:', data);
});

只要有数据可从“file.txt”文件中读取,可读流就会发出“data”事件
关闭:
. on('close ',callback)事件处理程序,它通常用于处理' close '事件,该事件在资源(如流或套接字)关闭时发出。'close'事件可以指示资源已成功关闭或在关闭过程中发生错误。

const fs = require('fs');

// Create a writable stream
const writableStream = fs.createWriteStream('file.txt');

// Handle the 'close' event
writableStream.on('close', () => {
  console.log('Stream closed');
});

// Close the writable stream
writableStream.end();

在调用writableStream.end()(完成向流中写入数据并关闭它)之后,将发出'close'事件。执行提供的回调函数。
注意:我知道这并不是你想要的,因为你想要Node.js文档中的信息,但我相信他们对某些问题不是很清楚,我做了很好的工作来解释这些事件,@Quentin做了很好的工作来链接到文档。

isr3a4wc

isr3a4wc2#

您正在从right place开始。
向下滚动到http.IncomingMessage
看看它的延伸:stream.Readable
按那个
您所询问的事件并不是HTTP响应所独有的,因此它们是从父类继承的,并且文档是链接的而不是重复的。

相关问题