2016-11-17 2 views
0

build 패키지를 기반으로하는 구성 요소 인 Atom 텍스트 편집기의 빌드 공급자에서 작업하고 있습니다. 이 패키지를 사용하면 제공자가 실행 가능 여부를 확인하기 위해 몇 가지 검사를 실행하여 각각 true 또는 false을 반환 할 수 있습니다.부모로부터 비동기 함수의 반환 값

특정 파일 유형이 프로젝트 폴더에 있는지 확인하여 빌드 공급자 활성화 여부를 확인하려면 glob을 사용하고 있습니다. 예를 들어 lessc의 빌드 공급자를 활성화하려면 프로젝트 폴더에 LESS 파일이 있어야합니다.

예 : 같은 비동기 glob를 사용하여 가능하면 제가 궁금하네요

isEligible() { 
    const paths = glob.sync("**/*.less"); 

    if (paths.length > 0) { 
     // one or more LESS files found 
     return true; 
    }  

    // no LESS files found 
    return false; 
} 

, 특히 내가 isEligible()에서 상태를 반환하는 방법에 대해 설명합니다. 다음을 수행 하지 일 : 함수가 비동기 적으로 당신이해야 할 일을 대신 작동하지 않습니다 문을 반환 실행

isEligible() { 
    return glob("**/*.less", function (err, files) { 
     if (err) { 
     return false; 
     } 

     return true; 
    }) 
} 
+0

수 없습니다! 'isEligible(). then ((data) => {})' – adeneo

답변

0

다음은 작동하지 않습니다.

예. 그것 absolutely cannot work.

isEligible의 발신자 (즉, build 패키지)가 비동기를 지원하지 않으면 함수를 동기식으로 설정해야합니다. 주변에는 방법이 없습니다. 하지만 isEligible에 콜백을 제공하거나 반환 값으로 약속을 수락하는 기능 요청을 제출할 수 있습니다.

+0

AJS의 대답과 비슷한 나의 이전 시도가 왜 작동하지 않는지 설명합니다. 설명 주셔서 감사합니다! – idleberg

0

으로 콜백 즉 사용할 수 있습니다 :

isEligible(callback) { 
    glob("**/*.less", function (err, files) { 
     if (err) { 
     return false; 
     } 

     callback(true); 
    }) 
} 

사용

//call isEligible 

isEligible(function(result){ 
    //do something with result 
});