节点流 - 流完成后同步到 return 数组。
Node Stream - Make sync to return array when stream is done.
我编写此函数是为了从流中提取文件列表。它可以工作,但是流是异步的并且 files
数组在流完成之前被 returned。我真的不想使用 promise 库……尽量保持代码简洁。流完成后如何 return files
数组?
function fileList(source) {
var files = [];
source.pipe(through2.obj(function(obj, enc, next) {
file = obj.history[0].split("/").pop();
files.push(file);
next();
}));
return files;
}
提供回调而不是从函数返回值:
function fileList(source, callback) {
var files = [];
source.pipe(through2.obj(function(obj, enc, next) {
file = obj.history[0].split("/").pop();
files.push(file);
next();
}, function(flushcb) {
flushcb();
callback(null, files);
}));
}
// ...
fileList(stream, function(err, files) {
if (err) throw err;
// use `files` here ...
});
我编写此函数是为了从流中提取文件列表。它可以工作,但是流是异步的并且 files
数组在流完成之前被 returned。我真的不想使用 promise 库……尽量保持代码简洁。流完成后如何 return files
数组?
function fileList(source) {
var files = [];
source.pipe(through2.obj(function(obj, enc, next) {
file = obj.history[0].split("/").pop();
files.push(file);
next();
}));
return files;
}
提供回调而不是从函数返回值:
function fileList(source, callback) {
var files = [];
source.pipe(through2.obj(function(obj, enc, next) {
file = obj.history[0].split("/").pop();
files.push(file);
next();
}, function(flushcb) {
flushcb();
callback(null, files);
}));
}
// ...
fileList(stream, function(err, files) {
if (err) throw err;
// use `files` here ...
});