Javascript 一旦处理完成,如何在异步nodejs中使用回调清除数组?
我有一个基于用户日期范围的搜索功能。有时我会看到来自服务器的结果,在某些情况下,它会返回空的响应数组Javascript 一旦处理完成,如何在异步nodejs中使用回调清除数组?,javascript,arrays,node.js,Javascript,Arrays,Node.js,我有一个基于用户日期范围的搜索功能。有时我会看到来自服务器的结果,在某些情况下,它会返回空的响应数组matches 我们如何确保async.eachSeries()完成并将结果发送到客户端并清除数组以进行下一次搜索?我试图应用setTimeout,但这并没有解决问题 search.js var matches; var results = []; // loop through each file async.eachSeries(filesData.logFiles, function(l
matches
我们如何确保async.eachSeries()
完成并将结果发送到客户端并清除数组以进行下一次搜索?我试图应用setTimeout
,但这并没有解决问题
search.js
var matches;
var results = [];
// loop through each file
async.eachSeries(filesData.logFiles, function(logfile, done) {
// read file
readStream = fs.createReadStream('./logs/' + filesData.searchEnv + '/' + logfile.filename, 'utf8')
readStream.pipe(split())
.on('data', function(line) {
if (typeof searchStr === 'string') {
multipleStrFlag = false;
if (messageDateInfo - searchStartDate > 0 && searchEndDate - messageDateInfo > 0) {
results.push({
filename: logfile.filename,
value: line
});
}
} else {
multipleStrFlag = true;
if (messageDateInfo - searchStartDate > 0 && searchEndDate - messageDateInfo > 0) {
results.push({
filename: logfile.filename,
value: line
});
}
};
});
done();
}, function(err) {
if (err) {
console.log('error', err);
}
});
readStream.on('end', function() {
if (multipleStrFlag) {
var matchingCondition = function matchingCondition(_ref) {
var itemB = _ref.itemB,
itemA = _ref.itemA;
return itemB.value.includes(itemA);
};
// filter all items from B that satisfy a matching condition with at least one item from A
matches = results.filter(function(itemB) {
return searchStr.every(function(itemA) {
return matchingCondition({
itemB: itemB,
itemA: itemA
});
});
});
} else {
matches = results;
}
setTimeout(function,(){
callback(matches);
matches = [];
results = [];
},1000);
});
async提供以下语法
eachSeries(coll, iteratee, callback)
其中,仅当所有迭代对象函数完成时才调用回调
使用此选项,您可以将回调函数更新为
function (err){
if(err) {//handle err}
results = []
}
这将清除每个系列后的结果数组