谷歌提升服务上的Javascript承诺

时间:2015-02-02 09:58:39

标签: javascript google-maps-api-3 promise

我对javascript中的Promise实现还很新。虽然我有一个简单的例子,但是在我弹出Google API高程回调函数后它没有用。我非常感谢有人可以帮我解决这个问题,因为我打算用这个方法编号在我的申请中的时间。

这是我当前的Promise函数代码(在javascript类结构中定义):

LinkClass.prototype.getElev = function(coordinate)
{
    return new Promise(function(resolve,reject)
    {
      //get User elevation again, because it is possible that the user elevation did not lock
      var locations = [];   //locations array
      locations.push(coordinate);

      // Create a LocationElevationRequest object using the array's one value
      var positionalRequest = {'locations': locations}

      //get User elevation for antenna elevation calculation
      var elevator = new google.maps.ElevationService();
      elevator.getElevationForLocations(positionalRequest, function(results, status) 
      {
        if (status == google.maps.ElevationStatus.OK) 
        {
            // Retrieve the first result
            if (results[0]) 
            {   
                resolve(results[0].elevation.toString());    
            }
            else 
                reject('No valid result was determined from the Google Elevation service. Please try again');
        }
        else 
            reject('Google Elevation service was not available. Please try again');

    });
  });   //end of promise function
}

然后我实现了这个功能:

LinkClass.prototype.drawLine = function()
  {
    //do other stuff...

    this.getElev(this.UserLocation).then(function(response){

      //for now just print the result
      alert(response);

    },function(Errortxt){

      alert(Errortxt);

    });

    //do other stuff
  }

我真的需要让这个工作好! 感谢

1 个答案:

答案 0 :(得分:0)

完全忘了发布这个问题的答案。再次感谢您的投入。对于它的价值,我在这里发布的代码对于实现promises是正确的,如果你想同步并使用回调函数的答案,那真的很酷......对于所有实际的目的,这在大多数情况下默认工作浏览器不包括外部" Promise javascript"文件或其他,Internet Explorer除外。 (他们应该很快就会注意到他们的浏览器开发技能正在逐渐消失)。

以下是我使用的标准承诺实施的链接,支持最低浏览器版本:) Promise browser impl & support