• 流模块基础


    简介

    在node中,一共有五种类型的流:readable,writable,transform,duplex以及'classic'。

    无论哪一种流都会使用.pipe()方法实现输入和输出。

    .pipe()函数接受一个源头src并将数据输出到一个可写的流dst中:

    src.pipe(dst);

    .pipe(dst)将会返回dst因此你可以链式调用多个流:

    a.pipe(b).pipe(c).pipe(d);

    readable流

    readable流可以产生数据,你可以将这些数据传送到一个writable,transform后者duplex流中,只需要调用pipe()方法:

    readableStream.pipe(dst);

    创建一个readable流

    var Readable = require('stream').readable;

    var rs = new Readable;

    rs.push('beep');

    rs.push('boop ');

    rs.push(null);

    rs.pipe(process.stdout);

    rs.push(null)的作用是告诉rs输出数据应该结束了。

    rs.push中的数据一直存在缓存中。

    var Readable = require('stream').Readable;

    var rs = Readable();

    var c = 97;

    rs._read = function(){

        rs.push(String.fromCharCode(c++));

        if(c > 'z'.charCodeAt(0)){

            rs.push(null);

        }

    };

    消耗一个readable流

    大部分时候,将一个readable流直接pipe到另一个类型的流或者使用through或者concat-stream创建的流中,是一件很容易的事情。但是有时候我们也需要直接消耗一个readable流。

    writable流

    一个writable流指的是只能流进不能流出的流。

    src.pipe(writableStream)

    创建一个writable流

    只需要定义一个._write(chunk.enc.next)函数,你就可以将一个readable流的数据释放到其中:

    var writable = require('stream').writable;

    var ws = writable();

    ws._write = function(chunk,enc,next){

        console.dir(chunk);

        next();

    };

    向一个writable流中写东西

    如果你需要一个writable流中写东西,只需要调用.write(data)即可。

    为了告诉一个writable你已经写完毕,只需要调用.end()方法。你也可以使用.end(data)在结束前再写一些数据。

    transform流

    你可以将transform流想象成一个流的中间部分,它可以读也可以写,但是并不保存数据,它只负责处理流经它的数据。

    duplex流

    duplex流是一个可读也可写的流,就好像一个电话,可以接收也可以发送语音。

  • 相关阅读:
    java得到当前日期的前一天或后一天
    java通过年月得到该月每一天的日期
    前后端分离的跨域请求问题解决
    关于java中分割字符串
    Linux终端命令
    eclipse中tomcat可以start启动,无法debug启动的解决
    通过DOS界面查看电脑上端口使用情况
    前端css
    mysql数据库
    IO阻塞
  • 原文地址:https://www.cnblogs.com/yzpweber/p/6569107.html
Copyright © 2020-2023  润新知