在 Angular JS 中取回 HTTP 请求的值
Get back the value of a HTTP Request in Angular JS
我尝试创建一个函数,它在 Javascript 中发出 HTTP 请求并获取该请求的结果。不幸的是,我完全不知道如何在其他函数中取回这个结果..
在这里找到我的两个函数(两者应该做同样的事情):
$scope.getInfo = function() {
return $http({
method: 'GET',
url: 'https://api.net'
}).then(function (response) {
return response.data;
});
};
还有一个:
$scope.getInfo = function() {
var defer = $q.defer();
$http.get('https://api.net').then(function(response) {
defer.resolve(response.data);
}, function(response) {
defer.reject(response);
});
return defer.promise;
};
我找到了很多关于发出请求但不取回其值的方法的文章(在另一个中简单调用函数只是显示 "object object" 而我没有找到正确显示它的解决方案)。
$scope.test = function() {
var myValue = $scope.getInfo();
alert(myValue); /* show [Object object] */
};
你能帮帮我吗?
使用 Promise 时应该这样进行:
$http({
method: 'GET',
url: 'https://api.net'
}).then(function (response) {
$scope.info = response.data
});
您当前的代码 return 一个 Promise,这就是为什么将 getInfo 编辑的结果 return 视为一个对象
如果你想让 getInfo 成为一个函数,你可以这样做:
$scope.getInfo = function() {
return $http({
method: 'GET',
url: 'https://api.net'
}).then(function (response) {
return response.data;
});
};
$scope.getInfo().then(function(result) {
alert(result);
});
使用 $http
服务的一个常见错误是将此服务方法的 return 值分配给一个变量,这是一个不是您想要的承诺。
考虑下面的代码:
$scope.getInfo = function() {
return $http({
method: 'GET',
url: 'https://api.net'
}).then(function (response) {
return response.data;
}).catch(function(error){
// do something with error
throw error;
});
};
getInfo
是一种方法,它 return 是一个承诺,将来的承诺将解析为您想要的数据值。
如果你在你的控制器中这样使用它:
$scope.test = function() {
var myValue = $scope.getInfo();
alert(myValue); /* show [Object object] */
};
myValue
的值是一个承诺(你可以简单地做一个 console.log(myValue)
),建议的方法是使用如下方法:
$scope.test = function() {
$scope.getInfo()
.then(function(response){
var myValue = response.data;
alert(myValue); /* show [Object object] */
}).catch(function(error) {
console.log(error);
throw error;
})
};
我尝试创建一个函数,它在 Javascript 中发出 HTTP 请求并获取该请求的结果。不幸的是,我完全不知道如何在其他函数中取回这个结果..
在这里找到我的两个函数(两者应该做同样的事情):
$scope.getInfo = function() {
return $http({
method: 'GET',
url: 'https://api.net'
}).then(function (response) {
return response.data;
});
};
还有一个:
$scope.getInfo = function() {
var defer = $q.defer();
$http.get('https://api.net').then(function(response) {
defer.resolve(response.data);
}, function(response) {
defer.reject(response);
});
return defer.promise;
};
我找到了很多关于发出请求但不取回其值的方法的文章(在另一个中简单调用函数只是显示 "object object" 而我没有找到正确显示它的解决方案)。
$scope.test = function() {
var myValue = $scope.getInfo();
alert(myValue); /* show [Object object] */
};
你能帮帮我吗?
使用 Promise 时应该这样进行:
$http({
method: 'GET',
url: 'https://api.net'
}).then(function (response) {
$scope.info = response.data
});
您当前的代码 return 一个 Promise,这就是为什么将 getInfo 编辑的结果 return 视为一个对象
如果你想让 getInfo 成为一个函数,你可以这样做:
$scope.getInfo = function() {
return $http({
method: 'GET',
url: 'https://api.net'
}).then(function (response) {
return response.data;
});
};
$scope.getInfo().then(function(result) {
alert(result);
});
使用 $http
服务的一个常见错误是将此服务方法的 return 值分配给一个变量,这是一个不是您想要的承诺。
考虑下面的代码:
$scope.getInfo = function() {
return $http({
method: 'GET',
url: 'https://api.net'
}).then(function (response) {
return response.data;
}).catch(function(error){
// do something with error
throw error;
});
};
getInfo
是一种方法,它 return 是一个承诺,将来的承诺将解析为您想要的数据值。
如果你在你的控制器中这样使用它:
$scope.test = function() {
var myValue = $scope.getInfo();
alert(myValue); /* show [Object object] */
};
myValue
的值是一个承诺(你可以简单地做一个 console.log(myValue)
),建议的方法是使用如下方法:
$scope.test = function() {
$scope.getInfo()
.then(function(response){
var myValue = response.data;
alert(myValue); /* show [Object object] */
}).catch(function(error) {
console.log(error);
throw error;
})
};