1

非同期関数によって開始されるタスクのリストがあります。ストリームの配列を約束することになります。これらのストリームを 1 つのストリームにマージし、それを Gulp に返す必要があります。以下は私が思いついたものです。それはちょっと不格好です。これを行うより良い方法はありますか?

return es.readable(function(count, callback) {
    var dest = this;
    promise.then(function(streams) {
        es.merge.apply(null, streams)
            .on('end', dest.emit.bind(dest, 'end'))
            .on('data', dest.emit.bind(dest, 'data'))
            .on('error', dest.emit.bind(dest, 'error'));
    });
});
4

1 に答える 1

0

es.merge読み取り可能なストリームを返します。
でもう 1 つ作成する理由はありませんes.readable
私は長い間 node.js の経験がありませんでしたが、役に立つことは何でも書いていると思います :)

// async way
function merged(promise, next) {
    promise.then(function(streams) {
        next(null, es.merge.apply(null, streams));
    }, next);
}
// like a promise
function merged(promise) {
  return {
    then: function(ok, fail) {
      promise.then(function(streams) {
        ok(es.merge.apply(null, streams));
      }, fail);
    }
  }; 
}

使用法:

merged(promise, function(err, stream){stream.pipe(anyWritable);}); // async
merged(promise).then(function(stream){stream.pipe(anyWritable);}); // then
于 2015-11-11T20:07:46.840 に答える