Sobald fs.readFile
Schleife durch alle Dateien und erhalten Sie die passenden Daten und drücken Sie es auf Ergebnisse, möchte ich callback(results)
aufrufen, damit ich Antwort an den Client senden kann. Ich erhalte einen Fehler mit unter dem Code Error: Callback is already called
HOw kann ich dieses Problem mit async
Ansatz lösen.Callback wird bereits mit Async aufgerufen?
app.js
searchFileService.readFile(searchTxt, logFiles, function(lines, err) {
console.log('Logs', lines);
if (err)
return res.send();
res.json(lines);
})
readFile.js
var searchStr;
var results = [];
function readFile(str,logFiles,callback){
searchStr = str;
async.map(logFiles, function(logfile, callback) {
fs.readFile('logs/dit/' + logfile.filename, 'utf8', function(err, data) {
if (err) {
callback(null,err);
}
var lines = data.split('\n'); // get the lines
lines.forEach(function(line) { // for each line in lines
if (line.indexOf(searchStr) != -1) { // if the line contain the searchSt
results.push(line);
callback(results,null);
}
});
});
}), function(error, result) {
results.map(result,function (result){
console.log(result);
});
};
}
versuchen, params umzukehren: Callback (Ergebnisse, null); in ok Ergebnis –
in app.js Ich habe versucht, ersten Fehler wie 'Funktion (err, Linien)' – hussain
Ja, aber wenn geht ok, Params ist umgekehrt –