Javascript angularjs:使用来自两个http请求的变量
我想使用来自两个http请求的变量。我尝试使用rootScope,但它不起作用Javascript angularjs:使用来自两个http请求的变量,javascript,angularjs,Javascript,Angularjs,我想使用来自两个http请求的变量。我尝试使用rootScope,但它不起作用dlon和dlat仍未定义。这是代码 var app = angular.module('myApp', []); app.controller('customersCtrl', function($scope,$rootScope, $http) { $http.get("http://api.zippopotam.us/us/68503") .then(function (response) {
dlon
和dlat
仍未定义。这是代码
var app = angular.module('myApp', []);
app.controller('customersCtrl', function($scope,$rootScope, $http) {
$http.get("http://api.zippopotam.us/us/68503")
.then(function (response) {
$rootScope.lon1 = response.data.places[0].longitude;
$rootScope.lat1 = response.data.places[0].latitude;
});
$http.get("http://api.zippopotam.us/us/68504")
.then(function (response) {
$rootScope.lon2 = response.data.places[0].longitude;
$rootScope.lat2 = response.data.places[0].latitude;
});
$scope.dlon = $rootScope.lon1 - $rootScope.lon2;
$scope.dlat = $rootScope.lat1 - $rootScope.lat2;
});
谢谢。您需要使用一个承诺,该承诺将在两个http请求完成后解决。在angular中,这是用$q完成的。我很好奇promise解决方案将如何工作
var app = angular.module('myApp', []);
app.controller('customersCtrl', function($scope,$rootScope, $http, $q) {
$q.all([
$http.get("http://api.zippopotam.us/us/68503"),
$http.get("http://api.zippopotam.us/us/68504")
]).then((a) =>{
$scope.dlon = a[0].data.places[0].longitude - a[1].data.places[0].longitude;
$scope.dlat = a[0].data.places[0].latitude - a[1].data.places[0].latitude;
})
});
您的scope.dlon和scope.dlat在http.get.I结束之前就已经初始化了,chrome很好用,但在safari中,AngularJS不知何故不起作用。我不知道为什么您可能不想使用箭头函数语法,它在ES6中是新的,并且不是所有地方都支持。使用
函数(a){…}