例如,在Node.js的可写的对象
我们手动创建的可写对象由用户使用,然后由用户调用写和结束方法。作为提供者,我们如何知道用户的可写对象是由用户执行的猜猜这个API,我先猜一个事件,但不是!像可读的一样,它也必须覆盖监视操作的方法。下面是创建可写的示例,允许用户在内部写入内容并监视用户编写的内容(基于巴别塔节点):
进口流from'stream;
新的流。可写;
w._write =(缓冲,ENC,下)= > {
console.log(缓冲+);
(下一步);要完成的触发器
};
W.on('finish ')(= > {
console.log('finish);
});
函数的调用者(我){
如果(i < 10){
W.write(我+ 'utf-8 '),'(= > {
写入完成
});
{人}
W.end();
}
setTimeout(被叫方,10,我+ 1);
}(0);
作为_read可读的,如果上述_write不覆盖,则抛出一个异常。
错误:未实现
在写。_write(_stream_writable js:430:6)
在dowrite(_stream_writable js:301:12)
此外,写的是设计为一个异步方法,和它的第三个参数可以传递到完成回调。所谓的完成,在实现功能_write,接下来的参数被称为是有原因的,写的是异步的。如果是同步执行,然后当我们需要处理一些_write方法异步交易,这可能导致顺序错误。例如,一个磁盘文件的写操作是异步的。如果我们写一个文件忽略这种异步,如果最后写操作受阻,目前可以先执行写操作。所以我们应该合理地调用下一个_write(它必须调用,否则它会等待,不能继续写)。
最后,当写入数据时,将触发终结事件,这意味着用户调用结束方法。如果同时写入该文件,则此时该文件将关闭。