gpt4 book ai didi

javascript - 在继续之前完成函数执行

转载 作者:行者123 更新时间:2023-12-02 17:10:06 25 4
gpt4 key购买 nike

我有一个在提交时验证的表单,在表单提交中调用了一个函数,提交继续并且不等待函数完成。我该如何解决这个问题?

var clientaddress=false;

function checkaddress(callback){
var geocoder = new google.maps.Geocoder();
geocoder.geocode({'address': address}, function(results, status) {
if (status != google.maps.GeocoderStatus.OK) {
clientaddress=false;
callback(false);
}
else if (status == google.maps.GeocoderStatus.OK) {
clientaddress=true;
callback(false);
}
}

jQuery(document).ready(function(){
jQuery("#submitOrder").submit(function(){
checkaddress(function(result) {

if (!result) {
jAlert("Please enter a valid address!");
jQuery("#address").focus();
isValidation = 0;

}
});

//other validation code that gets executed without waiting for checkaddress()
//submit page
})

我尝试创建一个既调用地址检查器又调用验证函数的函数,但它们仍然不等待对方。

如何解决这个问题?

最佳答案

因为geocode函数是异步的!使用回调:

function checkaddress(callback){
var geocoder = new google.maps.Geocoder();
geocoder.geocode( { 'address': address}, function(results, status) {
if (status != google.maps.GeocoderStatus.OK) {
callback(false)
} else if (status == google.maps.GeocoderStatus.OK) {
callback(true)
}
});
}

然后像这样使用:

checkaddress(function(result) {
if (result) {
//result true!
} else {
//result false!
}

//REST OF YOUR CODE GOES HERE, IF PUT OUTSIDE IT WILL EXECUTE WHILE CHECKADDRESS IS IN PROGRESS
});

您的 submit 函数也很可能运行默认行为,请使用 preventDefault

jQuery("#submitOrder").submit(function(e){
e.preventDefault();
//code
});

关于javascript - 在继续之前完成函数执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24911194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com