Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我定义了一些变量,并使用它们检索lat&;lng可以工作,但是在我把变量传递给另一个函数之后就不工作了_Javascript_Variables_Scope_Int_Var - Fatal编程技术网

Javascript 我定义了一些变量,并使用它们检索lat&;lng可以工作,但是在我把变量传递给另一个函数之后就不工作了

Javascript 我定义了一些变量,并使用它们检索lat&;lng可以工作,但是在我把变量传递给另一个函数之后就不工作了,javascript,variables,scope,int,var,Javascript,Variables,Scope,Int,Var,我面临的问题如下 我在函数中创建了一些变量,关键字var x=0;在某个时刻,我给x分配了一个新值,然后将其记录到控制台,它显示了正确的值。但当我尝试使用x(新值)将其与字符串/链接连接时,我得到的是0,而不是新值 我试着让x不带0,然后说是未定义的。我哪里错了 尝试: var x; var x=0 在第一个场景中,它将是未定义的,而在第二个场景中,它将是0 geocode(); function geocode() { var lng = 0; var lat

我面临的问题如下

我在函数中创建了一些变量,关键字var x=0;在某个时刻,我给x分配了一个新值,然后将其记录到控制台,它显示了正确的值。但当我尝试使用x(新值)将其与字符串/链接连接时,我得到的是0,而不是新值

我试着让x不带0,然后说是未定义的。我哪里错了

尝试: var x; var x=0

在第一个场景中,它将是未定义的,而在第二个场景中,它将是0

    geocode();
    function geocode() {

    var lng = 0;
    var lattitude = 0;
    var lattitudeb = 0;
    var lngb = 0;

    var locationA = '1234';
    var locationB = '1323';

    axios.get('https://maps.googleapis.com/maps/api/geocode/json', {
        params: {
            address: locationA,
            key: 'AIzaSyBpHiHzK323fsregSMCDbgX33xAUB_Cwwi8'
        }
    }).then(function (response) {

        lattitude = response.data.results[0].geometry.location.lat;
        lng = response.data.results[0].geometry.location.lng;


       console.log(lattitude);
       console.log(lng);
    }).catch(function (error) {
        console.log(error);
        });

    axios.get('https://maps.googleapis.com/maps/api/geocode/json', {
        params: {
            address: locationB,
            key: 'AIzaSyBpHiHzK3434fdf3434rferfeX33xAUB_Cwwi8'
        }
    }).then(function (response) {

        lattitudeb = response.data.results[0].geometry.location.lat;
        lngb = response.data.results[0].geometry.location.lng;

        console.log(lattitudeb);
        console.log(lngb);
    }).catch(function (error) {
        console.log(error);
    });

    axios.get('https://maps.googleapis.com/maps/api/distancematrix/json', {
        params: {
            units: 'imperial',
            origins: lattitude + ',' + lng, // here i get always 0 instead 
                                               of the new updated value
            destinations: lattitudeb + ',' + lngb,
            key: 'AIzaSyBpHirfserfserfser434efddf3ISMCDbgX33xAUB_Cwwi8'
        }
    }).then(function (r) {
        console.log(r);
    }).catch(function (e) {
        console.log(e);
    });

}
这三项要求:

    axios.get('https://maps.googleapis.com/maps/api/geocode/json', {
    axios.get('https://maps.googleapis.com/maps/api/geocode/json', {
几乎是同时发送的。第三个在第一个收到纬度和其他东西之前就出去了。此时,
latitude
的值仍然为零

这就是为什么您应该:发送第一个,
。然后根据输出发送一个。好的做法是将所需数据作为第一个承诺的返回值传递,而不是使用外部变量

实际上,这里,3依赖于1和2的结果,1和2是独立的,我读对了吗?因此,正确的模式是

Promise.all([
//... first request here
//... second request here
])
.then(
//... third request here

您应该将所有请求包含在一个
承诺链中。谢谢,现在收到了
Promise.all([
//... first request here
//... second request here
])
.then(
//... third request here