javascript - 当合并流计数超过 17 时,Gulp 合并流未在异步函数中触发“完成”事件
问题描述
我有以下琐碎的 gulpfile.js
const mergeStream = require("merge-stream");
const del = require("del");
exports.test = async function (cb) {
const streamCount = 18; // to simulate the number of streams being merged.
var streams[];
for (let i = 0; i < streamCount; i++) {
// generate dummy streams with gulp.src()
streams.push(gulp.src(".", { allowEmpty: true }));
}
// simulate multiple streams being merged
var stream = mergeStream(streams)
.on("finish", () => {
// this never gets called when `streamCount` above exceeds 17 (at least that's the threshold on my machine)
console.log("finish");
cb();
});
// simulate an awaitable operation.
await del("test/*");
return stream;
};
以上stream
只会在小于18finish
时触发。如果我删除/关键字,则无论.streamCount
async
await
finish
streamCount
const mergeStream = require("merge-stream");
const del = require("del");
exports.test = function (cb) {
const streamCount = 18; // to simulate the number of streams being merged.
var streams[];
for (let i = 0; i < streamCount; i++) {
// generate dummy streams with gulp.src()
streams.push(gulp.src(".", { allowEmpty: true }));
}
// simulate multiple streams being merged
var stream = mergeStream(streams)
.on("finish", () => {
// now this always gets called
console.log("finish");
cb();
});
// an awaitable operation not being awaited.
del("test/*");
return stream;
};
finish
无论异步函数中合并的流数量如何,我都希望事件始终触发。有什么我错过的吗?
解决方案
推荐阅读
- javascript - 窗口和 DOM 加载
- android-gradle-plugin - 没有方法签名: com.crashlytics.tools.gradle.CrashlyticsPlugin 在 Mac
- mockito - 是否有特定版本的 Mockito 我应该与 Playspec 一起使用
- wpf - 为什么我找不到这个 .xaml 文件?
- r - R - 控制模型矩阵中的交互顺序
- java - 空指针异常,不知道为什么?
- python - 使用python api在弹性搜索中转储批量数据
- c++ - 在创建此函数以从 C++ 中的单链表中搜索元素时,我在哪里犯了错误?
- lua - 如何修复我在 Roblox Lua 中制作的脚本?
- android - 如何使用 2 个不相互独立的单独微调器更新 TextView?