节点js - 以并行方式组合两个流

时间:2017-03-13 12:51:43

标签: node.js stream promise

我需要以并行方式组合两个流。我想使用这些流将一些生成的信息写入两个文件。 我已经完成了第一个流(stream1)。它看起来像这样:

'use strict';
var fs = require('fs');
var stream1 = fs.createWriteStream("random1.txt");
let ln = 1000000;
let j = 0;

function generateRandom()
{
    var reslt = true;
    do {
        ln--;
        j++;

        if (ln === 0) {
            stream1.write(...write randon number...);
            stream1.end();
        } else {
            reslt = stream1.write(...write randon number...);
        }
    } while (ln > 0 && reslt);
    if (ln > 0) {
        stream1.once('drain', generateRandom);
    }
}

stream1.on('error', (err) => {throw err;});

var stream1Promise = new Promise((resolve, reject)=>{
    try {
        generateRandom();
        });
    } catch (error) {
        reject(error);
    }
});

stream1Promise
    .then(function(callback) {
        if (typeof callback === 'function') {
            callback();
        }
    }, function(error) {
        console.log("Error occurred: ", error);
        stream1.end();
    });

但我不明白如何添加另一个流stream2,以便将不同的随机信息写入另一个文件。 我试图在stream1.write的回调中使用process.nextTick来切换我的流,但我得到的所有时间“致命错误:CALL_AND_RETRY_LAST分配失败 - 处理内存不足”错误。 谁能帮助我? 感谢。

0 个答案:

没有答案