2016-06-03 4 views
0

그래서 간단한 부울을 라이브러리에 전달해야합니다. 반환 값을 얻으려면 약속의 해상도를 평가해야합니다 (비동기 호출을 만듭니다). 그래서 저는 다음과 같은 것을 가지고 있습니다 :약속 후에 함수에서 결과 반환

import {funcThatReturnsPromise} from 'some-module'; 

function someFunc(someParam) { 
    funcThatReturnsPromise(someParam).then(theResult => someOtherFunc(theResult)); 
} 

function someOtherFunc(someParam) { 
    .... 
    return true; // do some things and return a bool 
} 

문제는 이것이 bool이 아니라 promise를 반환한다는 것입니다. 나는 (제 3 자 프로젝트를 포크하지 않고) bool보다는 promise를 다루기 위해 호출 코드를 수정할 수 없다. 약속의 요점은 중첩없이 비동기 호출을 처리 할 수 ​​있다는 것입니다. 그러나이 경우에는 동기식으로 처리해야합니다. 어떻게해야할지 모르겠다. 나는 문서를 살펴 봤지만 이것을 할 방법이 없다. 누구든지 여기에 올바른 방향으로 나를 가리킬 수 있을까요?

+1

조금 혼란 스럽습니다. 비동기 호출을 동 기적으로 처리하기를 원하십니까? – lux

답변

1

약속 및 비동기 코드를 다루는 것은 혼동을 줄 수 있지만 핵심은이를 과도하게 복잡하게 만드는 것이 아닙니다. 휠을 고안하지 않으려면이 구조 내에서 코드가 어디에 속해 있는지 이해해야합니다.

약속의 해결 후 코드 섹션을 실행하려면 .then 콜백에 속합니다. 콜백에서 코드 절반과 절반을 코드하는 것 같습니다.

코드를 약간 확장하면 효과를 내기 위해 노력하고 있다고 가정합니다.

function someFunc(someParam) { 
    funcThatReturnsPromise(someParam).then(theResult => someOtherFunc(theResult)); 

    if(someOtherFunc(theResult)){ 
     alert('A RESULT!'); 
    } 
} 

function someOtherFunc(someParam) { 
    .... 
    return true; 
} 

하지만 무엇을해야합니다.

function someFunc(someParam) { 
    funcThatReturnsPromise(someParam).then(theResult => { 
     funcResult = someOtherFunc(theResult) 
     if(funcResult){ 
      alert('A RESULT!') 
     } 
    }); 

} 

function someOtherFunc(someParam) { 
    .... 
    return true; 
}