Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 一旦处理完成,如何在异步nodejs中使用回调清除数组?_Javascript_Arrays_Node.js - Fatal编程技术网

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 = []
}
这将清除每个系列后的结果数组