我有以下承诺的功能:
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,它会等待结果:
async function isAdressValid(inputed_adress){
var isValid = await getAdressValidity(inputed_adress);
console.log(isValid);
// return isValid;
}
有没有办法在其他线程中等待结果,同时在同步事项中返回值,就像我的函数有望做的那样?
答案 0 :(得分:0)
您不能混合使用异步和同步代码。每当有异步时,你需要异步地包装它:
(async function(){
console.log(await Order.isAdressValid("1231231232"));
})()
或ES6方式:
Order.isAdressValid("1231231232").then(console.log);