2017-11-23 4 views
0

내가 약속 기능은 다음과 같습니다자바 스크립트에서 비동기 함수에서 기다려온 값을 반환하는 방법은 무엇입니까?

function getAdressValidity(inputed_adress){ 

var isValid = false; 

return new Promise(function(resolve, reject) { 
    MapApi.geocodeAddress(inputed_adress, function(err, data) { 

     if(err){ 
      isValid = false; 
     } else { 
      isValid = true; 
     } 
     resolve(isValid); 
    }); 
    }); 
} 

을 그리고 난 여기 약속 소비 : 즉시 내 페이지 내가 출력을로드로, 그리고

async function isAdressValid(inputed_adress){ 
var isValid = await getAdressValidity(inputed_adress); 
return isValid; 
} 

을 결과는 콘솔 :

console.log(Order.isAdressValid("1231231232")); 

이 출력 결과는 다음과 같습니다.

내가 그렇게 CONSOLE.LOG 배치하면

, 그것은 기다려온 ouputes 결과 :처럼, 동기 만에 값을 반환하면서

async function isAdressValid(inputed_adress){ 
var isValid = await getAdressValidity(inputed_adress); 
console.log(isValid); 
// return isValid; 
} 

다른 스레드에 결과를 기다릴 수있는 방법이 있나요 내 함수가 수행 할 것으로 예상됩니까?

답변

0

비동기 및 동기화 코드를 함께 사용할 수 없습니다. 뭔가 비동기있을 때마다, 당신은 비동기 적으로 포장해야합니다

(async function(){ 

    console.log(await Order.isAdressValid("1231231232")); 

})() 

또는 ES6의 방법 :

Order.isAdressValid("1231231232").then(console.log); 
+0

이 ES6 방법을 설명하기 위해. Async는 실제로 후드에서의 약속이기 때문에 동기화 코드에서 비동기 함수를 직접 호출하면 약속이 반환됩니다. – Shammoo

관련 문제