누구나 오류 로깅을 사용하여 파이프 라인을 처리하는 관용적 인 기능적 방법을 제안 할 수 있습니까? 샘플 명령형 (JavaScript) :오류 로깅과 함께 처리 파이프 라인을 처리하는 관용적 인 기능적 방법은 무엇입니까?
const filesToProcess = ['file1.txt','file2.txt','non_existent_file.txt'];
var totalLetterCountImperative = 0;
for (var i = 0; i < filesToProcess.length; i++){
try {
totalLetterCountImperative += fs.readFileSync(filesToProcess[i],'utf8').length;
} catch (e) {
console.log("There is an error whilst processing file: " + filesToProcess[i] + ". Hence, it's skipped. Error: " + e.message);
}
}
console.log("Total Letter Count: " + totalLetterCountImperative);
아래의 시도는 효과가 있지만 어색하고 어색합니다. 또한, 모든 오류에 대한 일반적인 아니다 :
const filesToProcess = ['file1.txt','file2.txt','non_existent_file.txt'];
const totalLetterCount = filesToProcess
.filter(f => fs.existsSync(f))
.map(f => fs.readFileSync(f,'utf8').length)
.reduce((a,b) => a+b);
filesToProcess
.filter(f => !fs.existsSync(f))
.map(f => console.error("There is an error whilst processing file: " + f +". Hence it's skipped. Error: File doesn't exist"));
console.log("Total Letter Count: " + totalLetterCount);
내가 Either
의 사용에 대해 읽어보십시오. 참으로 관용적 인 방법이라면 누군가가 예제를 제공하고 사용할 수있는 좋은 JavaScript 라이브러리를 제안 할 수 있습니까?
감사합니다.
당신이 오류에 파이프 라인을 포기'Either' 모나드를 사용하지만, 당신은 단지 오류를 기록하지만 파이프 라인을 계속 할 경우'Writer' 모나드를 사용하려면 . 빠른 Google 검색에서 JS 라이브러리를 찾을 수있었습니다. – 4castle
아마 모나드가 필요하지 않을 수도 있습니다. [확인] (https://github.com/folktale/data.validation) 신청자를 확인하십시오.그것은 '모두'와 비슷하게 작동하지만 단락이 없으며 오류 처리를 목적으로하는 어휘가 있습니다. – ftor