等到条件成立为止? [英] Wait until a condition is true?

查看:102
本文介绍了等到条件成立为止?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在JavaScript中使用了 navigator.geolocation.watchPosition ,并且我想要一种方法来处理用户可能提交依赖于位置的表单的可能性, code> watchPosition 找到了它的位置。



理想情况下,用户会定期看到等待位置然后表单会提交。

然而,我不确定如何在JavaScript中实现它,因为它缺少 wait code> function。



现行代码:

  var current_latlng = null; 
函数gpsSuccess(pos){
//console.log('gpsSuccess');
if(pos.coords){
lat = pos.coords.latitude;
lng = pos.coords.longitude;
}
其他{
lat = pos.latitude;
lng = pos.longitude;
}
current_latlng = new google.maps.LatLng(lat,lng);
}
watchId = navigator.geolocation.watchPosition(gpsSuccess,
gpsFail,{timeout:5000,maximumAge:300000});
$('#route-form')。submit(function(event){
//用户提交表单,我们需要它们的位置...
while(current_location == null){
toastMessage('Waiting for your location ...');
wait(500); //我应该用什么来代替?
}
//继续找到找到的位置。 ..
});


解决方案

您可以使用超时尝试重新提交形式:

  $('#route-form')。submit(function(event){
//用户提交表单,我们需要它们的位置...
if(current_location == null){
toastMessage('Waiting for your location ...');
setTimeout(function(){ $('#route-form')。submit();},500); //尝试在超时后提交表单
返回false;
} else {
//继续定位找到...
}
});


I'm using navigator.geolocation.watchPosition in JavaScript, and I want a way to deal with the possibility that the user might submit a form relying on location before watchPosition has found its location.

Ideally the user would see a 'Waiting for location' message periodically until the location was obtained, then the form would submit.

However, I'm not sure how to implement this in JavaScript given its lack of a wait function.

Current code:

var current_latlng = null;
function gpsSuccess(pos){
    //console.log('gpsSuccess');  
    if (pos.coords) { 
        lat = pos.coords.latitude;
        lng = pos.coords.longitude;
    }
    else {
        lat = pos.latitude;
        lng = pos.longitude;
    }
    current_latlng = new google.maps.LatLng(lat, lng);
}
watchId = navigator.geolocation.watchPosition(gpsSuccess,
                  gpsFail, {timeout:5000, maximumAge: 300000});
$('#route-form').submit(function(event) {
    // User submits form, we need their location...
    while(current_location==null) {
        toastMessage('Waiting for your location...');
        wait(500); // What should I use instead?
    }
    // Continue with location found...
});

解决方案

You could use a timeout to try to re-submit the form:

$('#route-form').submit(function(event) {
    // User submits form, we need their location...
    if(current_location==null) {
        toastMessage('Waiting for your location...');
        setTimeout(function(){ $('#route-form').submit(); }, 500); // Try to submit form after timeout
        return false;
    } else {
        // Continue with location found...
    }
});

这篇关于等到条件成立为止?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆