当前位置: 首页 > 后端技术 > Node.js

Node.jsapi文档注释

时间:2023-04-04 00:24:48 Node.js

1.EventEmitter构造和添加监听器该对象由node的事件模块提供。通过扩展它,你可以得到一个EventEmitter类,你可以在实例化后添加监听器。constEventEmitter=require('events');classMyEmitterextendsEventEmitter{}constmyEmitter=newMyEmitter();myEmitter.on('event',()=>{console.log('事件发生!');});myEmitter.emit('事件');触发事件在最后一行,使用emit方法即可。在事件处理程序中(如果调用常规事件),this默认为绑定到事件的EventEmitter,但如果使用箭头函数,因为它遵循词法范围,this将指向一个空对象。异步和同步EventEmitter默认会同步执行所有的监听器。如果要使用异步模式,请使用setImmediate()或process.nextTick()方法。其他支持的函数监听器可以调用多次或只调用一次,例如once()接口EventEmitter在绑定和销毁监听器时会相应触发newListener和removeListener事件。另外,还有各种接口可以操作听众的数量、名称、上限等。详见node.js官方文档2,Stream分类Stream包括ReadableStream、WritableStream、DuplexStream和TransformStream。前两种顾名思义,第三种指的是可读可写流,第四种是可以修改或转换的DuplexStream对象模式:流以Buffer、String或Uint8Array的形式传输默认,但可以通过objectMode参数更改为对象模式。对象模式接受null以外的数据类型。缓存及其含义缓存容量由highWaterMark标识,避免内存压力过大,同时读写有各自的缓冲区,保证在速度不同时可以独立工作。可写流HTTP请求,客户端HTTP响应,服务器fs写入流zlibstreamscryptostreamsTCP套接字子进程stdinprocess.stdout,process.stderrWritable类实现了多种控制读取操作的方法。以drain方法为例,它允许数据在流写入时触发(Writable.write()的返回值即将由false变为true):functionwriteOneMillionTimes(writer,data,encoding,callback){让我=1000000;写();函数写入(){让ok=true;做{我--;if(i===0){//最后一次!writer.write(数据,编码,回调);}else{//看看我们是否应该继续,或者等待//不要传递回调,因为我们还没有完成。ok=writer.write(数据,编码);}}while(i>0&&ok);if(i>0){//必须提前停止!//一旦耗尽就再写一些writer.once('drain',write);}}}这个官方demo大致做了一件事:将数据写出一百万次,如果正常结束则执行回调,如果强制停止(背压)则触发drain事件~另外cork会将缓存中的所有写入数据存储到内存中,直到在调用Writable.uncork()时重新激活它。包含流类型类似于可写流。需要讨论的是它的两种模式,三种状态~两种模式:包括流动和暂停。流模式下,EventEmitter发出的数据事件会自动读写数据,速度快;在paused模式下,需要显式调用stream.read()方法指定读取数据块的三种状态:指的是readable._readableState.flowing的状态,初始为null,没有消费者,所以不会产生数据,但是当mode变为flowing时,它的值也会切换为true,开始产生数据的过程——发布数据事件。剩下的node.js会在后面写~