在角度中使用.then()或延迟的promise

时间:2016-10-28 19:09:37

标签: angularjs angular-promise

JS很新。使用angular我有一个控制器,我想在其中调用maxmind js库来获取用户IP的lng / lat并简单地将其弹出到mapbox的map.setView中。唯一的问题是mapbox当然不会等待回调完成并设置地图,而我仍在进行回调。快速搜索显示我需要做一个.then或延迟的回复,并让映射设置等待回调完成。尝试了这两个后,我仍然无法让它工作。有什么建议?!谢谢!

    var onSuccess = function(response){
        $scope.lat = response.location.latitude;
        $scope.lng = response.location.longitude;
        console.log($scope.lat, $scope.lng);
    };
    var onError = function(error){
        console.log(error);
    };
    geoip2.city(onSuccess, onError);


    L.mapbox.accessToken = 'token';
    $scope.map = L.mapbox.map('map', 'mapbox.streets', 
        .setView([$scope.lat, $scope.lng], 12)
        .addControl(L.mapbox.geocoderControl('mapbox.places', {
            keepOpen: true
        }));

以下是我正在使用的示例

//in my case do the maxmind callback and set vars lat/lng via the res.
var promise = $http.get('/api/v1/movies/avengers');

//in my case setup the map and pass in lat/lng from the callback 
promise.then(
  function(payload) {
    $scope.movieContent = payload.data;
  });

这似乎可以在$ http中以有角度的方式工作,但不适用于我没有使用$ http的特定回调。当我尝试设置它时,我没有定义承诺。

0 个答案:

没有答案