javascript-Node.js事件流:在哪里设置setMaxListeners?

我搜索并搜索了此搜索,但无济于事.我已经梳理了网络(包括*)和Node文档,得到了答案,但没有找到一个可行的方法(也许这对我来说很不好).我正在使用gulp配置文件中的事件流,并且有一个特殊任务正在从EventEmitter类中遇到经典的“检测到内存泄漏”错误.根据我的发现,解决此问题的答案似乎是调用EventEmitter类的setMaxListeners方法.我的研究建议事件流具有一个Stream对象,该对象应该是EventEmitter的实例.但是,无论我以什么方式尝试调用setMaxListeners,都无法找到方法.在研究完这个问题之后,我想我会把它带到这里的Node专家中(我假设这很简单,只是缺少了一些东西).这是我的代码:

return eventStream.merge(
        gulp.src('./jscript/libs/file-one.js'),
        gulp.src('./jscript/libs/filder_one/file-two.js'),
        gulp.src('./jscript/libs/folder_two/file-three.js'),
        gulp.src('./jscript/libs/folder_three/file_four.js'),
        gulp.src('./jscript/libs/folder_four/file_five.js'),
        gulp.src('./jscript/libs/folder_five/file_six.js'), 
        gulp.src('./jscript/libs/file_seven.js'),
        gulp.src('./jscript/libs/file_eight.js'),
        gulp.src('./jscript/lists/rules/*.js')
    )        
    .pipe(concat('my_file.js'))
    .pipe(gulp.dest('./jscript/dist/'))
    .pipe(rename('my_file.min.js'))
    .pipe(uglify())
    .pipe(gulp.dest('./jscript/dist/'));

谢谢!

解决方法:

这不是您问题的直接答案,但是您可以将一组glob模式传递给’gulp.src()’,而不是合并多个’gulp.src()’.它不能解决您的问题吗?

https://github.com/gulpjs/gulp/blob/master/docs/API.md#gulpsrcglobs-options

编辑

作为直接回答,以下对我有用:

var merged = eventStream.merge(...);
merged.setMaxListeners(0);
return merged.pipe(...);

在合并函数中添加事件侦听器后,似乎在事件循环的滴答声之间检查了侦听器计数.因此,我们可以在添加侦听器后立即设置setMaxListeners.

上一篇:node.js接收异步任务结果的两种方法----callback和事件广播


下一篇:node之EventEmitter