node.js - Gulp:如何从流数组的 promise 创建流?

标签 node.js gulp event-stream

我有一个由异步函数启动的任务列表。我最终得到了一系列流的 promise 。我需要将这些流合并为一个流并将其返回给 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'));
    });
});

最佳答案

es.merge 返回可读流。
没有理由再用 es.read 创建一个。
我已经很长时间没有 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

关于node.js - Gulp:如何从流数组的 promise 创建流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33654551/

相关文章:

node.js - 如何在 Mongoose 中使用预保存 Hook 数据库值?

css - 是否可以将 Stylus 配置为编译 .css 一次,而不是在 .styl 发生变化时?

testing - 无法在 Angular 2.0.0 测试中加载 .html

将 Gulp Uglify 与 js 数组一起使用时出现 Javascript 错误

ruby-on-rails - ActionController::Live 是否可以检查连接是否仍然存在?

node.js - 如何将静态 YAML 文件与 React Native 应用程序捆绑在一起?

javascript - Express:获取完整路线参数

javascript - Browserify、Babel 6、Gulp - 传播运算符上的意外标记

javascript - event-stream.through 和 event-stream.map 有什么区别

Firebase实时数据库REST事件流: do not download the whole tree