我有一个AngularJS项目,并且会向后端发出一个get请求,这将返回数据并使用此函数,因为对同一个url的get请求被多次发送
function getfunction(some input data) {
$http.get('requset URL' , { params : {some parameters})
.success(function(data){
return data;
});
}
var output = getfunction(input data to the function);
但是输出总是未定义我如何修复它以使输出具有从上面的get请求返回的值。
答案 0 :(得分:4)
$ http返回一个承诺。您的数据将异步到达。
function getfunction(some input data) {
return $http.get('requset URL' , { params : {some parameters});
}
var output;
getfunction(input data to the function).then(function(data){
output = data;
}, function(){
// Handle errors.
});
答案 1 :(得分:1)
$http.get
使用promises。或者换句话说:它以异步方式执行请求。
您可以返回$http.get
返回自己的内容 - 承诺 - 并使用then
添加续集:
function getfunction(some input data) {
return $http.get('requset URL' , { params : {some parameters});
}
getfunction(input data to the function).then(function(data) {
});
// or .success
getfunction(input data to the function).success(function(data) {
});
答案 2 :(得分:0)
调用是异步的,因此您调用的函数将首先运行,然后在从get请求返回响应时运行成功回调。成功处理程序应该处理此方案中的输出(例如,在文本框中显示返回值)
答案 3 :(得分:0)
$ http返回$ promise。所以你要么使用$ q服务:
function getfunction(some input data) {
var deferred = $q.defer();
$http.get('requset URL' , { params : {some parameters})
.success(function(data){
deferred.resolve(data)
});
return deferred.promise;
}
var output = getfunction(input data to the function).then(function(data){
output = data;
}, function(err){
console.log(err)
});
或
function getfunction(some input data) {
return $http.get('requset URL' , { params : {some parameters});
}
var output;
getfunction(input data to the function).then(function(data){
output = data;
}, function(err){
console.log(err)
});