一旦处理完成,如何在asynchronousnodejs中使用callback清除数组?

我有一个基于用户date范围的searchfunction。 有时我会看到服务器的结果,在某些情况下,它会返回空的响应数组matches

我们如何确保async.eachSeries()完成并将结果发送到客户端,并清除下一个search的数组? 我试图应用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); }); 

asynchronous提供以下语法。

 eachSeries(coll, iteratee, callback) 

其中只有当所有迭代函数完成时才调用callback函数。

使用这个,你可以更新callback函数

 function (err){ if(err) {//handle err} results = [] } 

哪个应该清除每个系列发布的结果数组