2017-11-23 10 views
0

私は約束機能次き:javascriptで待っている値をasync関数から返すには?

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); 
    }); 
    }); 
} 

を、私はここに約束消費:とすぐに私のページは、結果がコンソールにI出力ロードされると、その後

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

を:

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

この出力は次のとおりです。

enter image description here

私はそのように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

関連する問題