如何等待响应来自$http请求并在angularjs中的$scope变量中赋值?
情况就是这样:如何等待响应来自$http请求并在angularjs中的$scope变量中赋值?,angularjs,Angularjs,情况就是这样: $scope.signupNow = function () { retrieveData(); console.log($scope.userid); } function retrieveData(){ // ** some http request ** $scope.userid = id; } 现在,http请求需要一些时间来执行,“$scope.userid”中没有任何值,因为它只是在调用函数后打印出来的 您能建议如何等到响应到来吗???
$scope.signupNow = function () {
retrieveData();
console.log($scope.userid);
}
function retrieveData(){
// ** some http request **
$scope.userid = id;
}
现在,http请求需要一些时间来执行,“$scope.userid”中没有任何值,因为它只是在调用函数后打印出来的
您能建议如何等到响应到来吗???好的,如果您想等到http响应,那么您可以使用回调函数
$scope.signupNow = function () {
retrieveData().then(funtion(response) {
console.log(response.data);
// do here what you need
});
}
function retrieveData(){
return $http.get('url');
}
$scope.signupNow = function () {
retrieveData(function(){
console.log($scope.userid);
});
}
function retrieveData(callback){
// ** some http request **
$scope.userid = id;
callback();
}
好的,如果你想等到http响应,那么你可以使用回调函数
$scope.signupNow = function () {
retrieveData(function(){
console.log($scope.userid);
});
}
function retrieveData(callback){
// ** some http request **
$scope.userid = id;
callback();
}
使用angularJs承诺-
$scope.signupNow = function () {
var promise = retrieveData();
promise.then(function(success) {
console.log($scope.userid);
}, function(reason) {
alert('Failed: ' + reason);
});
}
function retrieveData(){
var deferred = $q.defer();
(your http request).then(){
$scope.userid = id;
deferred.resolve('success');
}
return deferred .promise;
}
使用angularJs承诺-
$scope.signupNow = function () {
var promise = retrieveData();
promise.then(function(success) {
console.log($scope.userid);
}, function(reason) {
alert('Failed: ' + reason);
});
}
function retrieveData(){
var deferred = $q.defer();
(your http request).then(){
$scope.userid = id;
deferred.resolve('success');
}
return deferred .promise;
}
在回调函数中写下您的代码。这是由于AJAX的
async
behave造成的。将代码放入。然后(function(){
--code--})
您是否阅读过Angular网站上的$http文档?它非常清楚地描述了承诺的使用(你可能想阅读一下这个主题)。这是由于AJAX的async
behave造成的。将代码放入。然后(function(){
--code--})
您是否阅读过Angular网站上的$http文档?它非常清楚地描述了承诺的使用(你可能想阅读一下这个主题)。抱歉,伙计,上面的错误是“retrieveData()未定义”。在javascript中,命名函数在运行时被提升到文件的顶部,因此它应该被定义。抱歉,伙计,上面的错误是“retrieveData()IsUndefined“在javascript中,命名函数在运行时被提升到文件的顶部,因此应该对其进行定义。