一旦fs.readFile
遍歷所有文件並獲取匹配的數據並將其推送到結果,我想調用callback(results)
,以便我可以向客戶端發送響應。我遇到以下代碼錯誤Error: Callback is already called
我可以使用async
解決此問題的方法。回調已使用異步調用?
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);
});
};
}
嘗試反向參數:callback(results,null);在確定的結果 –
在app.js我試圖通過第一個錯誤像功能(錯誤,行)' – hussain
是的,但是當好的時候,params倒過來 –