如何在javascript中从异步函数返回等待的值?

时间:2017-11-23 18:50:46

标签: javascript asynchronous async-await

我有以下承诺的功能:

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

这给出了这个输出:

enter image description here

如果我像这样放置console.log,它会等待结果:

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

有没有办法在其他线程中等待结果,同时在同步事项中返回值,就像我的函数有望做的那样?

1 个答案:

答案 0 :(得分:0)

您不能混合使用异步和同步代码。每当有异步时,你需要异步地包装它:

(async function(){

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

})()

或ES6方式:

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