2016-12-28 10 views
1

"스트림 2 & 3 (풀) 예"에서 : https://github.com/jprichardson/node-fs-extra#walk이 while 루프는 JSLint에서 승인 한 방식으로 어떻게 다시 작성할 수 있습니까? 하여 보면

var items = [] // files, directories, symlinks, etc 
var fs = require('fs-extra') 
fs.walk(TEST_DIR) 
    .on('readable', function() { 
    var item 
    while ((item = this.read())) { 
     items.push(item.path) 
    } 
    }) 
    .on('end', function() { 
    console.dir(items) // => [ ... array of files] 
    }) 
while에 대한 JSLint 불만

최신 버전 :

Unexpected statement '=' in expression position. 
       while ((item = this.read())) { 
Unexpected 'this'. 
       while ((item = this.read())) { 

나는 방법을 알아 내려고 노력하고있어 이것을 JSLint 승인 방식으로 작성하십시오. 어떤 제안? 당신이 더글러스 크록 포드처럼이 코드를 작성하기에 정말 관심이 있다면

+0

비교를 위해'=='를 사용하셨습니까? –

+1

을 비교한다면 'while ((item === this.read()))' –

+2

@ A.J 아니요, 여기 진리 값을 반환 할 것으로 예상되는 과제입니다. JSLint는 이것들을 좋아하지 않습니다. 한 세트의 표현식에서 너무 많은 것들이 진행되고 있습니다. – axelduch

답변

3

(:

(나는 ...이 코드의 다른 JSLint 침해가 알고 있어요 내가 그 문제를 해결하는 방법을 알고 ... 참고) JSLint의 작성자), while 루프 대신에 재귀를 사용할 것입니다. ES6에서 꼬리 호출 최적화가 있기 때문입니다.

var items = []; 
var fs = require("fs-extra"); 
var files = fs.walk(TEST_DIR); 
files.on("readable", function readPaths() { 
    var item = files.read(); 
    if (item) { 
     items.push(item.path); 
     readPaths(); 
    } 
}).on("end", function() { 
    console.dir(items); 
}); 
+0

답장을 보내 주셔서 감사합니다. '이 '을 어떻게 없애시겠습니까? – boozedog

+0

@boozedog 업데이트 됨, '이것을 (를) 제거하기' – 4castle

+0

끝내 주셔서 감사합니다! – boozedog